Проблемы с компиляцией: не могу найти crt1.o - PullRequest
99 голосов
/ 13 июня 2011

У меня есть виртуальная система Debian, которую я использую для разработки.

Сегодня я хотел попробовать llvm / clang.

После установки clang я не могу скомпилировать мои старые c-проекты (с помощью gcc). Это ошибка:

...
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status
...

Я удалил Clang, и он все еще не работал.

Кто-нибудь знает, как я могу это исправить?

Ответы [ 17 ]

1 голос
/ 20 марта 2013

Наткнулся на это на CentOs 5.4. Заметил, что lib64 содержит файлы crt * .o, а lib - нет. Установил glibc-devel через yum, который установил биты i386, и это решило мою проблему.

0 голосов
/ 11 октября 2017

У меня была такая же проблема сегодня, я решил ее, установив рекомендуемые пакеты: libc6-dev-mipsel-cross libc6-dev-mipsel-cross, libc-dev-mipsel-cross

Это сработало:

sudo apt-get install libc6-dev-mipsel-cross
0 голосов
/ 19 октября 2016

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

$ find /usr/ -name crti*

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

sudo apt-get install libc6-dev
0 голосов
/ 06 апреля 2015

Я решил это следующим образом:

1) попробуйте найти файлы ctr1.o и ctri.o, используя find -name ctr1.o

В моем компьютере есть следующее: $/usr/lib/i386-linux/gnu

2) Добавьте этот путь к переменной среды PATH (также LIBRARY_PATH) (чтобы узнать, какое имя: введите env команда в Терминале):

$PATH=/usr/lib/i386-linux/gnu:$PATH
$export PATH
0 голосов
/ 28 августа 2013

Даже у меня была та же ошибка компиляции, когда я кросс-компилировал i686-cm-linux-gcc.

Приведенный ниже вариант компиляции решил мою проблему

$ i686-cm-linux-gcc a.c --sysroot=/opt/toolchain/i686-cm-linux-gcc

Примечание: sysroot должен указывать на каталог компилятора, где доступно usr / include

В моем случае набор инструментов устанавливается в каталог / opt / toolchain / i686-cm-linux-gcc, а usr / include также доступен в этом же каталоге

0 голосов
/ 29 июля 2013

использовать gcc -B lib_path_contained_crt? .O

0 голосов
/ 11 апреля 2013

В моем случае ошибка crti.o была вызвана конфигурацией пути выполнения из Matlab.Например, вы не можете выполнить файл, если вы не указали путь к вашему каталогу выполнения ранее.Для этого: File> setPath, добавьте ваш каталог и сохраните.

...