Я пытаюсь создать инструментальную цепочку для Linux на OS X Mavericks. У меня есть GCC 4.8.1 двоичные файлы в /usr/local/gcc-4.8.1-for-linux64/bin/
, и это команда используется для создания скрипта конфигурации для Binutils:Кросс-компиляция binutils на OS X
$ ../binutils-2.23.2/configure --target=arm-unknown-linux --prefix=$PREFIX --bindir=/usr/local/gcc-4.8.1-for-linux64/bin/
При запуске make all
, я получил эту ошибку:
gcc -DHAVE_CONFIG_H -I. -I../../binutils-2.23.2/binutils -I. -I../../binutils-2.23.2/binutils -I../bfd -I../../binutils-2.23.2/binutils/../bfd -I../../binutils-2.23.2/binutils/../include -I./../intl -DLOCALEDIR="\"/usr/local/arm/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT readelf.o -MD -MP -MF .deps/readelf.Tpo -c -o readelf.o ../../binutils-2.23.2/binutils/readelf.c
../../binutils-2.23.2/binutils/readelf.c:9046:20: error: adding 'int' to a
string does not append to the string [-Werror,-Wstring-plus-int]
fputs (" " + n, stdout);
~~~~~~~~^~~
../../binutils-2.23.2/binutils/readelf.c:9046:20: note: use array indexing to
silence this warning
fputs (" " + n, stdout);
^
& [ ]
1 error generated.
make[4]: *** [readelf.o] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-binutils] Error 2
make: *** [all] Error 2
В чем причина ошибки и как ее разрешить?
Update 1
Обновлено binutils
2,24, ошибка была изменена на
[ALL ] x86_64-build_apple-darwin13.0.0-gcc -D_RPC_THREAD_SAFE_ -D_GNU_SOURCE -DIS_IN_build -include /Volumes/CrosstoolCompile/arm-unknown-linux-gnueabi/build/build-libc-startfiles/config.h rpc_sample.c -o /Volumes/CrosstoolCompile/arm-unknown-linux-gnueabi/build/build-libc-startfiles/sunrpc/cross-rpc_sample.o -MMD -MP -MF /Volumes/CrosstoolCompile/arm-unknown-linux-gnueabi/build/build-libc-startfiles/sunrpc/cross-rpc_sample.o.dt -MT /Volumes/CrosstoolCompile/arm-unknown-linux-gnueabi/build/build-libc-startfiles/sunrpc/cross-rpc_sample.o -c
[ERROR] rpc_scan.c:40:10: fatal error: 'libintl.h' file not found
[ALL ] #include <libintl.h>
[ALL ] ^
[ERROR] rpc_main.c:41:10: fatal error: 'libintl.h' file not found
[ALL ] #include <libintl.h>
[ALL ] ^
[ALL ] In file included from rpc_clntout.c:34:
[ERROR] ./rpc/types.h:73:9: error: unknown type name '__u_char'; did you mean 'u_char'?
[ALL ] typedef __u_char u_char;
[ALL ] ^~~~~~~~
[ALL ] u_char
[ALL ] /usr/include/sys/types.h:84:24: note: 'u_char' declared here
[ALL ] typedef unsigned char u_char;
[ALL ] ^
Нет пользовательских флагов компилятора/линкера набор.
Похоже, вы прошли мимо вашей проблемы с binutils и перешли к созданию eglibc. Я не могу вам помочь, так как никогда не использовал eglibc. ELLCC использует musl как стандартную библиотеку C. –
Большое спасибо за ваш совет @RichardPennington. Просто чтобы уточнить, как вы можете сказать, что eglibc используется? Я выбрал glibc в crosstool-ng все время. – hanxue
Это было предположение. Я googled rpc_scan.c, и это было упомянуто в связи с eglibc. Я легко мог ошибаться. Важно то, что вы прошли мимо binutils. –