Wenn ich gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) auf meinem machen möchte Ubuntu 12.04 (x86_64). Der aktuell aktive gcc ist 4.6.2. Ich tat:
./configure
dann
make
Allerdings bekomme ich diesen Fehler
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status
Beim Durchsuchen des Webs scheint es ein Problem mit dem Standort von zu geben crti
. Diese Dateien sind auf dem System verfügbar
# 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
Auch das libc6-Entwicklungspaket ist installiert
# 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
Wie kann ich das beheben?
AKTUALISIEREN:
Nach dem Hinzufügen dieser
LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
Dieses Problem ist gelöst. Aber jetzt verstehe ich
/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
nicht vorhanden ist , das ist auf meinem System. Mit diesen Schritten können Sie Ihren Fehler nicht beheben.Antworten:
Dies ist ein BUG , der im Launchpad gemeldet wurde, wenn es eine Problemumgehung gibt:
Kompilieren eines 64-Bit-Programms auf einer 32-Bit-Plattform:
für 32 Bit native:
Dies in Ihrer .bashrc-Datei (oder über eine Konsole ausgeführt) reicht aus, damit GCC den neuen Speicherort der Bibliothek findet.
Danke. nach Iain Buclaw (ibuclaw), um in die richtige Richtung zu weisen.
12.10 32 Bit
12.10 64 Bit
quelle
./configure --disable-multilib
gemäß gcc.gnu.org/ml/gcc-help/2009-05/msg00238.html von Grund auf neu erstellen musste. Vielen Dank für Ihre Hilfemake install
als letzter Schritt. Ich habe LIBRARY_PATH gesetzt, aber ohne Erfolg !! Jede Hilfe dankbarexport LIBRARY_PATH="/usr/lib/x86_64-linux-gnu${LIBRARY_PATH+:$LIBRARY_PATH}"
Sie daher oder (wenn Sie wissen, dass es leer ist)export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
In meinem Fall habe
Ubuntu 16.04
ich überhaupt keinecrti.o
:Also installiere ich das Entwicklerpaket:
quelle
Wenn Sie GCC 4.8 auf x86-64 aus Upstream-Quellen erstellen, besteht das Problem, dass Sie sowohl 32- als auch 64-Bit-Bibliotheken erstellen müssen (es sei denn, multi-lib ist deaktiviert). In diesem Fall müssen Sie beide Pfade
/usr/lib/x86_64-linux-gnu
und hinzufügen/usr/lib32
.quelle
Ich baue auch eine ältere Version von gcc auf meinem Ubuntu-Rechner (3.4.6 auf einem 4.6.3-Rechner).
Ich habe @ mahmoods --disable-multilib-Lösung ausprobiert, aber dann schien das Paket, das ich brauchte, um gcc 3.4.6 zu verwenden, auch auch die 32-Bit-Bibliothek benötigen.
Daher habe ich der LIBRARY_PATH sowohl die 64-Bit- als auch die 32-Bit-Bibliothek hinzugefügt
Oh und ich bin auf Ubuntu 12.04 64bit
quelle