Quand je veux créer gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) sur mon Ubuntu 12.04 (x86_64). Le gcc actif actuel est 4.6.2. J'ai fait:
./configure
ensuite
make
Cependant, je reçois cette erreur
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status
En recherchant sur le Web, il semble qu'il y ait un problème avec l'emplacement de crti
. Ces fichiers sont disponibles sur le système
# find /usr/ -name crti*
/usr/lib32/crti.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o
Le paquet de développement libc6 est également installé
# dpkg -l | grep libc6
ii libc6 2.15-0ubuntu10.3 Embedded GNU C Library: Shared libraries
ii libc6-dbg 2.15-0ubuntu10.3 Embedded GNU C Library: detached debugging symbols
ii libc6-dev 2.15-0ubuntu10.3 Embedded GNU C Library: Development Libraries and Header Files
ii libc6-dev-i386 2.15-0ubuntu10.3 Embedded GNU C Library: 32-bit development libraries for AMD64
ii libc6-i386 2.15-0ubuntu10.3 Embedded GNU C Library: 32-bit shared libraries for AMD64
ii libc6-pic 2.15-0ubuntu10.3 Embedded GNU C Library: PIC archive library
Comment puis-je résoudre ce problème?
MISE À JOUR:
Après avoir ajouté ces
LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
Ce problème est résolu. Mais maintenant je reçois
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux- gnu/crtn.o' is incompatible with i386 output
collect2: ld returned 1 exit status
makeinfo
ne pas être présent, qui se trouvent sur mon système. Impossible d'obtenir votre erreur avec ces étapes.Réponses:
Il s'agit d'un BUG signalé dans le tableau de bord, mais il existe une solution de contournement:
compiler un programme 64 bits sur une plateforme 32 bits:
pour 32 bits natif:
Que dans votre fichier .bashrc (ou exécuté à partir d'une console) suffit à GCC pour trouver le nouvel emplacement de la bibliothèque.
THX. à Iain Buclaw (ibuclaw) pour indiquer dans la bonne direction.
12.10 32 bits
12.10 64 bits
la source
./configure --disable-multilib
et reconstruire à partir de zéro selon gcc.gnu.org/ml/gcc-help/2009-05/msg00238.html Merci pour votre aidemake install
de la dernière étape. J'ai défini LIBRARY_PATH mais en vain !! Toute aide appréciéeexport LIBRARY_PATH="/usr/lib/x86_64-linux-gnu${LIBRARY_PATH+:$LIBRARY_PATH}"
ou (si vous savez qu'il est vide)export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
Dans mon cas,
Ubuntu 16.04
je n'ai pascrti.o
du tout:J'installe donc le package développeur:
la source
En construisant GCC 4.8 sur x86-64 à partir de sources en amont, vous rencontrez le problème d'avoir besoin de construire des bibliothèques 32 et 64 bits (sauf si la multi-lib est désactivée). Dans ce cas, vous devez ajouter les deux chemins d'accès
/usr/lib/x86_64-linux-gnu
et/usr/lib32
.la source
Je construis également une ancienne version de gcc sur ma machine Ubuntu (3.4.6 sur une machine 4.6.3)
J'ai essayé la solution --disable-multilib de @ mahmood, mais le package dont j'avais besoin pour utiliser gcc 3.4.6 semblait également d'avoir également besoin de la bibliothèque 32 bits.
J'ai donc ajouté les bibliothèques 64 bits et 32 bits à LIBRARY_PATH
Oh et je suis sur Ubuntu 12.04 64bits
la source