1 votes

Recette pour la cible 'vmlinux' a échoué?

Je tente de construire un noyau pour QEMU afin d'émuler un Raspberry Pi : http://xecdesign.com/compiling-a-kernel/ https://www.raspberrypi.org/documentation/linux/kernel/building.md

Cependant, en exécutant la commande : make ARCH=arm

Il a bien compilé pendant un bon moment, mais s'est ensuite arrêté lorsqu'il a obtenu ce message :

kevin@kevin-laptop:~/linux$ make ARCH=arm
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CHK     kernel/config_data.h
  LINK    vmlinux
  LD      vmlinux.o
  MODPOST vmlinux.o
  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
drivers/built-in.o: In function `mmc_fixup_device':
of_iommu.c:(.text+0xb9674): undefined reference to `mmc_debug'
Makefile:923: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1

Je ne suis pas exactement sûr de ce qu'il me dit. Mon hypothèse est qu'il ne parvient pas à trouver une bibliothèque dont il a besoin pour sa compilation. J'utilise l'ensemble d'outils Raspberry Pi (qui semble être plug and play essentiellement s'ils l'ont mis en ligne sur leur git pour la chaîne d'outils officielle Pi)

Une aide serait la bienvenue ?

3voto

omjaijagdish Points 1

Ajoutez ci-dessous le pilote au fichier (arch/arm/configs/bcm2835_defconfig)

 CONFIG_MMC_BCM2835=y
 CONFIG_MMC_BCM2835_DMA=y
 CONFIG_DMADEVICES=y
 CONFIG_DMA_BCM2708=y

cp arch/arm/configs/bcm2835_defconfig ./.config
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-

ça fonctionne pour moi.

c'est tout.

1voto

Daniel Points 1

Avait le même problème en utilisant le toolchain croisé Debian jessie. En utilisant le noyau rpi-3.18.y. Je l'ai traqué jusqu'à mmc_debug qui était mal défini :

christoph@debian:~/raspidev/linux$ find drivers/mmc -name \*.c -exec -H grep mmc_debug {} \;
drivers/mmc/host/bcm2835-mmc.c
drivers/mmc/host/omap_hsmmc.c
drivers/mmc/core/quirks.c

En regardant plus loin, seuls les fichiers bcm2835-mmc.c et quirks.c ont le symbole défini :

bcm2835-mmc.c:
/*static */unsigned mmc_debug;
/*static */unsigned mmc_debug2;
module_param(mmc_debug, uint, 0644);
module_param(mmc_debug2, uint, 0644);

quirks.c:
extern unsigned mmc_debug;

J'ai donc activé à nouveau LES deux pilotes MMC ainsi que l'adaptateur hôte BCM2835 dans ma configuration. Ceci s'est AJOUTÉ au correctif de configuration déjà appliqué.

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 3e7abcd..95eb332 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -6,7 +6,7 @@ comment "MMC/SD/SDIO Host Controller Drivers"

 config MMC_BCM2835
        tristate "Support MMC sur BCM2835"
-       depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835
+       depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 || ARCH_VERSATILE_PB || ARCH_VERSATILE_AB
        help
          Cela sélectionne l'interface MMC sur BCM2835.

Activez ensuite le BCM2835 dans la configuration et compilez. Cela a fonctionné pour moi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X