Hello,
J'essai donc de compiler un uClinux pour tester sur une carte Freescale. uClinux est dispo avec les noyaux 2.0, 2.4 et 2.6. Pour les 2 derniers ca se compile sans trop de soucis, en revanche pour le 2.0 j'obtiens un truc infame du genre :
francois@debian:~/uClinux-dist$ make
make -C tools/ucfront
make[1]: entrant dans le répertoire « /home/francois/uClinux-dist/tools/ucfront »
make[1]: Rien à faire pour « all ».
make[1]: quittant le répertoire « /home/francois/uClinux-dist/tools/ucfront »
ln -sf /home/francois/uClinux-dist/tools/ucfront/ucfront tools/ucfront-gcc
ln -sf /home/francois/uClinux-dist/tools/ucfront/ucfront tools/ucfront-g++
ln -sf /home/francois/uClinux-dist/tools/ucfront/ucfront-ld tools/ucfront-ld
make ARCH=m68knommu CROSS_COMPILE=m68k-elf- -j1 -C linux-2.0.x || exit 1
make[1]: entrant dans le répertoire « /home/francois/uClinux-dist/linux-2.0.x »
m68k-elf-gcc -g -D__KERNEL__ -I/home/francois/uClinux-dist/linux-2.0.x/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strength-reduce -I../include -pipe -DNO_MM -DNO_FPU -m5200 -Wa,-S -Wa,-m5200 -D__ELF__ -DMAGIC_ROM_PTR -DUTS_SYSNAME='"uClinux"' -DUTS_MACHINE='"m68knommu"' -c -o init/version.o init/version.c
set -e; for i in arch/m68knommu/kernel arch/m68knommu/mm arch/m68knommu/lib arch/m68knommu/platform/5407 kernel drivers fs net ipc lib mmnommu; do make -C $i; done
make[2]: entrant dans le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/kernel »
make[2]: Rien à faire pour « all ».
make[2]: quittant le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/kernel »
make[2]: entrant dans le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/mm »
make all_targets
make[3]: entrant dans le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/mm »
make[3]: Rien à faire pour « all_targets ».
make[3]: quittant le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/mm »
make[2]: quittant le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/mm »
make[2]: entrant dans le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/lib »
make all_targets
make[3]: entrant dans le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/lib »
m68k-elf-gcc -g -D__KERNEL__ -I/home/francois/uClinux-dist/linux-2.0.x/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strength-reduce -I../include -pipe -DNO_MM -DNO_FPU -m5200 -Wa,-S -Wa,-m5200 -D__ELF__ -DMAGIC_ROM_PTR -DUTS_SYSNAME='"uClinux"' -c -o checksum.o checksum.c
In file included from /home/francois/uClinux-dist/linux-2.0.x/include/asm/system.h:6,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/sched.h:26,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/mm.h:4,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/malloc.h:4,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/skbuff.h:146,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/netdevice.h:62,
from /home/francois/uClinux-dist/linux-2.0.x/include/net/ip.h:27,
from /home/francois/uClinux-dist/linux-2.0.x/include/net/checksum.h:22,
from checksum.c:34:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h: In function ‘__generic_memcpy_tofs’:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h:136: warning: implicit declaration of function ‘memcpy’
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h:136: warning: incompatible implicit declaration of built-in function ‘memcpy’
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h: In function ‘__constant_memcpy_tofs’:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h:171: warning: incompatible implicit declaration of built-in function ‘memcpy’
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h: In function ‘__generic_memcpy_fromfs’:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h:241: warning: incompatible implicit declaration of built-in function ‘memcpy’
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h: In function ‘__constant_memcpy_fromfs’:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/segment.h:276: warning: incompatible implicit declaration of built-in function ‘memcpy’
In file included from /home/francois/uClinux-dist/linux-2.0.x/include/linux/termios.h:5,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/tty.h:20,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/sched.h:31,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/mm.h:4,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/malloc.h:4,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/skbuff.h:146,
from /home/francois/uClinux-dist/linux-2.0.x/include/linux/netdevice.h:62,
from /home/francois/uClinux-dist/linux-2.0.x/include/net/ip.h:27,
from /home/francois/uClinux-dist/linux-2.0.x/include/net/checksum.h:22,
from checksum.c:34:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/termios.h: In function ‘trans_from_termio’:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/termios.h:70: warning: incompatible implicit declaration of built-in function ‘memcpy’
/home/francois/uClinux-dist/linux-2.0.x/include/asm/termios.h: In function ‘trans_to_termio’:
/home/francois/uClinux-dist/linux-2.0.x/include/asm/termios.h:84: warning: incompatible implicit declaration of built-in function ‘memcpy’
In file included from /home/francois/uClinux-dist/linux-2.0.x/include/linux/netdevice.h:62,
from /home/francois/uClinux-dist/linux-2.0.x/include/net/ip.h:27,
from /home/francois/uClinux-dist/linux-2.0.x/include/net/checksum.h:22,
from checksum.c:34:
/home/francois/uClinux-dist/linux-2.0.x/include/linux/skbuff.h: In function ‘skb_put’:
/home/francois/uClinux-dist/linux-2.0.x/include/linux/skbuff.h:411: error: label at end of compound statement
/home/francois/uClinux-dist/linux-2.0.x/include/linux/skbuff.h: In function ‘skb_push’:
/home/francois/uClinux-dist/linux-2.0.x/include/linux/skbuff.h:424: error: label at end of compound statement
checksum.c: In function ‘csum_partial_copy_fromuser’:
checksum.c:143: warning: pointer targets in passing argument 1 of ‘csum_partial’ differ in signedness
checksum.c: In function ‘csum_partial_copy’:
checksum.c:154: warning: pointer targets in passing argument 1 of ‘csum_partial’ differ in signedness
make[3]: *** [checksum.o] Erreur 1
make[3]: quittant le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/lib »
make[2]: *** [first_rule] Erreur 2
make[2]: quittant le répertoire « /home/francois/uClinux-dist/linux-2.0.x/arch/m68knommu/lib »
make[1]: *** [linuxsubdirs] Erreur 2
make[1]: quittant le répertoire « /home/francois/uClinux-dist/linux-2.0.x »
make: *** [linux] Erreur 1
Pouvez vous me donner des conseils pour résoudre ce genre de problèmes ?
# version de gcc
Posté par Étienne . Évalué à 3.
Dans le fichier Documentation/Changes du noyau 2.0.40, voici ce qu'ils préconisent :
- Dynamic linker (ld.so) 1.7.14
- GNU CC 2.7.2.1
- Binutils 2.8.1.0.23
[...]
Note that it is _very_ unlikely that you will be able to compile the
2.0 kernel with gcc-3.x or binutils 2.9.x, and even if it compiles, it
might not work properly.
[^] # Re: version de gcc
Posté par fr4ncois . Évalué à 1.
Alors pour gcc, j'avais déja essayé avec la 2.95, même chose, en revanche je ne m'étais pas penché sur les autres outils genre ld ou binutils. Mais comment changer de version pour binutils ? Parceque sur les dépots il n'y a qu'une version dispo. Il faut que je télécharge les sources et les compile moi-meme ?
[^] # Re: version de gcc
Posté par Étienne . Évalué à 2.
Qui posent problème. Essaye de voir avec quel compilateur tu peux compiler une fonction de ce genre (en particulier le ).
[^] # Re: version de gcc
Posté par fr4ncois . Évalué à 1.
[^] # Re: version de gcc
Posté par fr4ncois . Évalué à 1.
[^] # Re: version de gcc
Posté par Étienne . Évalué à 3.
Etienne
# support du PCI
Posté par fr4ncois . Évalué à 1.
Seulement la j'ai ajouté le support du port PCI, et il ne trouve pas la définition de certaines fonctions associées :
m68k-elf-ld -g -T arch/m68knommu/platform/5407/MOTOROLA/ram.ld arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.o init/main.o init/version.o \
arch/m68knommu/kernel/kernel.o arch/m68knommu/mm/mm.o arch/m68knommu/platform/5407/platform.o kernel/kernel.o fs/fs.o ipc/ipc.o net/network.a mmnommu/mm.o \
fs/filesystems.a \
drivers/block/block.a drivers/char/char.a drivers/net/net.a drivers/pci/pci.a \
/home/francois/uClinux-dist/linux-2.0.x/lib/lib.a arch/m68knommu/lib/lib.a /usr/local/lib/gcc-lib/m68k-elf/2.95.3/./m5200/libgcc.a -o linux
kernel/kernel.o: In function `process_timeout':
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:125: undefined reference to `pcibios_present'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:126: undefined reference to `pcibios_find_class'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:129: undefined reference to `pcibios_find_device'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:129: undefined reference to `pcibios_read_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:129: undefined reference to `pcibios_read_config_word'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:130: undefined reference to `pcibios_read_config_dword'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:131: undefined reference to `pcibios_strerror'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:132: undefined reference to `pcibios_write_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:133: undefined reference to `pcibios_write_config_word'
/home/francois/uClinux-dist/linux-2.0.x/kernel/sched.c:133: undefined reference to `pcibios_write_config_dword'
drivers/net/net.a(ne.o): In function `ne_probe_pci':
/home/francois/uClinux-dist/linux-2.0.x/drivers/net/ne.c:259: undefined reference to `pcibios_read_config_dword'
/home/francois/uClinux-dist/linux-2.0.x/drivers/net/ne.c:255: undefined reference to `pcibios_find_device'
/home/francois/uClinux-dist/linux-2.0.x/drivers/net/ne.c:274: undefined reference to `pcibios_read_config_word'
/home/francois/uClinux-dist/linux-2.0.x/drivers/net/ne.c:283: undefined reference to `pcibios_write_config_word'
/home/francois/uClinux-dist/linux-2.0.x/drivers/net/ne.c:266: undefined reference to `pcibios_read_config_byte'
drivers/pci/pci.a(pci.o): In function `sprint_dev_config':
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:971: undefined reference to `pcibios_read_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:972: undefined reference to `pcibios_read_config_dword'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:973: undefined reference to `pcibios_read_config_word'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1064: undefined reference to `pcibios_read_config_dword'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1091: undefined reference to `pcibios_read_config_dword'
drivers/pci/pci.a(pci.o): In function `scan_bus':
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1168: undefined reference to `pcibios_read_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1172: undefined reference to `pcibios_read_config_dword'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1174: undefined reference to `pcibios_read_config_dword'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1205: undefined reference to `pcibios_read_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1207: undefined reference to `pcibios_write_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1209: undefined reference to `pcibios_read_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1212: undefined reference to `pcibios_write_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1216: undefined reference to `pcibios_read_config_byte'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1284: undefined reference to `pcibios_read_config_word'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1286: undefined reference to `pcibios_write_config_word'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1316: undefined reference to `pcibios_write_config_dword'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1329: undefined reference to `pcibios_write_config_dword'
drivers/pci/pci.a(pci.o): In function `pci_init':
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1349: undefined reference to `pcibios_init'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1351: undefined reference to `pcibios_present'
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1362: undefined reference to `pcibios_fixup'
make[1]: *** [linux] Erreur 1
make[1]: quittant le répertoire « /home/francois/uClinux-dist/linux-2.0.x »
make: *** [linux] Erreur 1
pourtant si je prends le cas de cette ligne :
/home/francois/uClinux-dist/linux-2.0.x/drivers/pci/pci.c:1168: undefined reference to `pcibios_read_config_byte'
l'include <linux/bios32.h> , qui contient l'entete de la fonction pcibios_read_config_byte, est bien présent dans le fichier pci.c, donc comment il ne trouve pas la définition ?
[^] # Re: support du PCI
Posté par Étienne . Évalué à 2.
Verifie que CONFIG_PCI est bien activé et que tu as bien tout recompilé. Au besoin fait un "make distclean" ou repart de zero pour t'assurer que bios32.c est bien recompilé.
Etienne
[^] # Re: support du PCI
Posté par fr4ncois . Évalué à 1.
Merci beaucoup pour ton aide !
Francois
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.