Когда я хочу сделать gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) на моем Ubuntu 12.04 (x86_64). Текущий активный gcc - 4.6.2. Я сделал:
./configure
тогда
make
Однако я получаю эту ошибку
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status
При поиске в Интернете возникает проблема с местоположением crti
. Эти файлы доступны в системе
# 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
Также установлен пакет libc6 devel
# 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
Как я могу это исправить?
ОБНОВИТЬ:
После добавления этих
LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
Эта проблема решена. Однако теперь я получаю
/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
не присутствуя, который находится в моей системе. Не могу добраться до вашей ошибки с этими шагами.Ответы:
Это BUG сообщили в Launchpad, бют есть обходной путь:
составление 64-битной программы на 32-битной платформе:
для 32-битного натива:
Этого в вашем файле .bashrc (или из консоли) достаточно, чтобы GCC нашел новое местоположение библиотеки.
Спасибо. в Iain Buclaw (ибуклав), чтобы указать в правильном направлении.
12.10 32 бита
12.10 64 бита
источник
./configure --disable-multilib
и восстановить с нуля в соответствии с gcc.gnu.org/ml/gcc-help/2009-05/msg00238.html Спасибо за вашу помощьmake install
последний шаг. Я установил LIBRARY_PATH, но безрезультатно !! Любая помощь приветствуетсяexport LIBRARY_PATH="/usr/lib/x86_64-linux-gnu${LIBRARY_PATH+:$LIBRARY_PATH}"
или (если вы знаете, что он пуст)export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
В моем случае
Ubuntu 16.04
у меня нетcrti.o
вообще:Поэтому я устанавливаю пакет разработчика:
источник
При сборке GCC 4.8 на x86-64 из исходных кодов вы сталкиваетесь с необходимостью создания как 32-, так и 64-битных библиотек (если не включена multi-lib). В этом случае вам нужно добавить оба пути
/usr/lib/x86_64-linux-gnu
и/usr/lib32
.источник
Я также собираю более старую версию gcc на своем компьютере с Ubuntu (3.4.6 на компьютере с 4.6.3).
Я пробовал решение @ mahmood --disable-multilib, но затем мне показалось, что пакет, который мне нужен для использования gcc 3.4.6, тоже нужна 32-битная библиотека.
Таким образом, я добавил 64-битные и 32-битные библиотеки в LIBRARY_PATH
Ох и я на Ubuntu 12.04 64bit
источник