2010-07-21 2 views
5

Я пытаюсь создать кросс-компиляцию инструментальной привязки на основе GCC4.5 и newlib с включенным оптимизацией золота и ссылок. GCC компилируется отлично, но он не генерирует файлы crt1.o или crti.o. Поэтому, когда я попытался использовать компилятор для построения Newlib он жалуется на сообщение:Отсутствует crt1 и crti при скрещивании

ld: error: cannot open crti.o: No such file or directory 
ld: error: cannot open crtn.o: No such file or directory 
ld: error: cannot find -lc 

При поиске файлов с именем элт * в каталоге, где установлен GCC4.5 я получил следующий результат:

find ../../../tooltarget/ -name "crt*" -print #(result modified to consume less space) 
crtprec80.o, crtend.o, crtfastmath.o, crtbegin.o, crtendS.o, crtprec32.o, crtbeginS.o, crtbeginT.o, crtprec64.o 

Из спецификации GCC кажется, что gcc нуждается в файлах crtbegin.o и crti.o, но доступен только один из них.

*startfile:          
%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o 
%s;:crtbegin.o%s} 

Ниже флаги я использовал при компиляции GCC:

--prefix=${TTP}/usr   --build=x86_64-pc-linux-gnu 
--host=x86_64-pc-linux-gnu --target=x86_64-awn-linux-gnu 
--with-gmp=${TTP}/usr  --with-mpc=${TTP}/usr 
--with-mpfr=${TTP}/usr  --with-libelf=${TTP}/usr    
--enable-languages=c  --enable-lto       
--disable-nls    --disable-shared      
--disable-multilib   --disable-decimal-float     
--disable-libmudflap  --disable-libssp      
--disable-libgomp   --disable-threads      
--without-headers   --with-newlib       
--with-build-sysroot=${TTP} --with-build-time-tools=${TTP}/usr/bin 

Я уверен, что в случае, это связано я настроил GCC неправильно, или «вещи» просто не работает таким образом, или если файлы crti.o должны появиться откуда-то еще.

Заранее спасибо

Allan W. Nielsen

+1

Возможный дубликат файла [crti.o отсутствует] (http://stackoverflow.com/questions/91576/crti-o-file-missing) – user2284570

+0

Я просто решил проблему, подобную этой, с добавлением gcc build '-host = x86_64' на './configure', но не уверен, что помогает. – ton

ответ

1

Некоторые crt* файлы идут не от компилятора, но из библиотеки C. Я подозреваю, что здесь у вас есть crt1.o и crti.o.

+0

Нет, есть ctr1.S и crti.S, которые генерируются скриптом во время сборки gcc. – user2284570

Смежные вопросы