не может найти crti.o: нет такого файла или каталога

17

Когда я хочу сделать 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

Как я могу это исправить?

UPDATE:

После добавления этих

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
    
задан mahmood 06.02.2013 в 13:50
источник

4 ответа

9

Это BUG , сообщаемое в панели запуска, byt существует обходной путь:

компилирование 64-битной программы на 32-битной платформе:

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

для 32 бит native:

LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH
export LIBRARY_PATH

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

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

12.10 32 бит

[email protected]:~$ sudo find /usr/ -name crti*
/usr/lib/i386-linux-gnu/crti.o
[email protected]:~$ 

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

12.10 64 бит

[email protected]:~$ sudo find /usr/ -name crti*
/usr/lib/x86_64-linux-gnu/crti.o
[email protected]:~$ 

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH
    
ответ дан hhlp 06.02.2013 в 18:39
источник
1

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

$ find /usr/ -name crti*

Итак, я устанавливаю пакет разработчика:

sudo apt-get install libc6-dev
    
ответ дан Eugen Konkov 19.10.2016 в 11:21
0

Построение GCC 4.8 на x86-64 из источников восходящего потока вы столкнулись с проблемой необходимости создания как 32-, так и 64-битных библиотек (если не отключено multi-lib). В этом случае вам нужно добавить оба пути /usr/lib/x86_64-linux-gnu и /usr/lib32 .

    
ответ дан John Vreeland 16.04.2013 в 11:18
0

Я также создаю более старую версию 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 бит.

    
ответ дан Heartinpiece 13.01.2014 в 06:30