Не удается найти crti.o: Нет такого файла или каталога

Когда я хочу сделать 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 directorycollect2: 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 libc6ii  libc6                                  2.15-0ubuntu10.3                          Embedded GNU C Library: Shared librariesii  libc6-dbg                              2.15-0ubuntu10.3                        Embedded GNU C Library: detached debugging symbolsii  libc6-dev                              2.15-0ubuntu10.3                        Embedded GNU C Library: Development Libraries and Header Filesii  libc6-dev-i386                         2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit development libraries for AMD64ii  libc6-i386                             2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit shared libraries for AMD64ii  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 outputcollect2: ld returned 1 exit status

Это жук сообщается в launchpad, что существует обходной путь :

компиляция 64-разрядной программы на 32-разрядной платформе :

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH export LIBRARY_PATH

для 32-битного родного :

LIBRARY_PATH=/usr/lib32:$LIBRARY_PATHexport LIBRARY_PATH

Этого в вашем файле .bashrc (или запущенного с консоли) достаточно, чтобы GCC нашел новое местоположение библиотеки.

спасибо Иэну Буклоу (ibuclaw), чтобы указать правильное направление.

12.10 32 бита

hhlp@hhlp:~$ sudo find /usr/ -name crti*/usr/lib/i386-linux-gnu/crti.ohhlp@hhlp:~$ LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LIBRARY_PATH export LIBRARY_PATH

12.10 64 бита

hhlp@hhlp:~$ sudo find /usr/ -name crti*/usr/lib/x86_64-linux-gnu/crti.ohhlp@hhlp:~$ LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH export LIBRARY_PATH

В моем случае Ubuntu 16.04 у меня нет crti.o вообще:

$ find /usr/ -name crti*

Поэтому я устанавливаю пакет разработчика:

sudo apt-get install libc6-dev

При создании 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's --disable-multilib, но затем пакет, который мне был нужен для использования gcc 3.4.6, также, похоже, нуждался в 32-разрядной библиотеке.

Таким образом, я добавил как 64-разрядную, так и 32-разрядную библиотеки в LIBRARY_PATH

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib32:$LIBRARY_PATH export LIBRARY_PATH 

О, и я использую Ubuntu 12.04 64 бит

Я получаю другие ошибки, связанные с отсутствием “makeinfo”, который * есть * в моей системе. Не могу добраться до вашей ошибки с помощью этих шагов.