2010-07-21 20 views
5

Tôi đang cố gắng xây dựng một chuỗi công cụ biên dịch chéo dựa trên GCC4.5 và newlib với vàng và tối ưu hóa thời gian liên kết được kích hoạt. GCC biên dịch tốt nhưng nó không tạo ra các tệp crt1.o hoặc crti.o. Do đó khi tôi cố gắng sử dụng trình biên dịch để xây dựng Newlib nó than phiền với thông điệp:Thiếu crt1 và crti khi crosscompiling

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 

Khi tìm kiếm tập tin có tên crt * trong thư mục nơi GCC4.5 được cài đặt tôi đã nhận kết quả sau:

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 

Từ thông số của GCC, có vẻ như gcc cần cả tệp crtbegin.o và tệp crti.o, nhưng chỉ có một trong số chúng có sẵn.

*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} 

Tiếp theo là cờ tôi được sử dụng khi biên dịch 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 

Tôi chắc trên nếu điều này là do tôi cấu hình GCC sai, hoặc "công cụ" chỉ đơn giản là không làm việc theo cách này, hoặc nếu các tập tin crti.o nên đến từ một nơi khác.

Cảm ơn trước

Allan W. Nielsen

+1

có thể trùng lặp của [tập tin crti.o bị thiếu] (http://stackoverflow.com/questions/91576/crti-o-file-missing) – user2284570

+0

Tôi vừa giải quyết được vấn đề như thế này với việc xây dựng gcc thêm '--host = x86_64' để './configure' script, nhưng không chắc chắn nếu giúp. – ton

Trả lời

1

Một số crt* file đến không phải từ trình biên dịch, nhưng từ thư viện C. Tôi nghi ngờ đây là trường hợp ở đây cho crt1.ocrti.o của bạn.

+0

Không, có ctr1.S và crti.S được tạo bởi tập lệnh trong thời gian xây dựng của gcc. – user2284570

Các vấn đề liên quan