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