2013-12-06 8 views
5

Запуск build сценарий из результатов ELLCC в этой ошибкиОшибка здание ELLCC

gcc -DHAVE_CONFIG_H -I. -I../../../src/binutils/binutils -I. -I../../../src/binutils/binutils -I../bfd -I../../../src/binutils/binutils/../bfd -I../../../src/binutils/binutils/../include -I./../intl -DLOCALEDIR="\"/Library/Caches/Homebrew/ellcc--svn-HEAD/lib/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -Wno-unused-value -Wno-shadow -MT nm.o -MD -MP -MF .deps/nm.Tpo -c -o nm.o ../../../src/binutils/binutils/nm.c 
../../../src/binutils/binutils/nm.c:1690:28: error: 'sbrk' is deprecated 
     [-Werror,-Wdeprecated-declarations] 
     char *lim = (char *) sbrk (0); 
         ^
/usr/include/unistd.h:582:7: note: 'sbrk' declared here 
void *sbrk(int); 
     ^

Следующие компиляторы были использованы с тем же результатом:

  • GCC 4.8
  • LLVM-GCC 2.8
  • llvm 3.3

ответ

2

Эта ошибка возникает из-за того, что sbrk() устарел в OSX, -Werror включен для сборки binutils, а компилятор (в данном случае «gcc» является псевдонимом для clang) справедливо жалуется на использование sbrk(). Я буду изучать эту ошибку в этот уик-энд, когда мне не придется быть в моей дневной работе. ;-)

Я изучил его немного больше. Это произошло потому, что последняя версия OS X (Mavericks) использует clang в качестве своего компилятора, а /usr/include/unistd.h имеет устаревшее объявление sbrk().

Решение заключалось в добавлении опции -Wno-error = устаревших деклараций в CFLAGS для binutils. Я также должен был сделать несколько других изменений, чтобы завершить сборку Max OS. Вы можете найти последние данные в дереве subversion ELLCC.

+0

Благодарим за обновление. Возможно, 'Makefile' нуждается в чистой/дистилляционной цели? Вытащив последнее обновление ELLCC, выполните результаты сборки в https://gist.github.com/7889240 – hanxue

7

У меня была такая же проблема с компиляцией binutils-2.24 на Mac OSX Mavericks 13.2.0 с clang. Благодаря предложению Ричарда Пеннингтона мне удалось собрать binutils, указав еще несколько аргументов -Wno-error gcc, установив CFLAGS перед запуском configure. А именно, это команда, которые я побежал построить и установить Binutils:

CFLAGS="-Wno-error=deprecated-declarations -Wno-error=unused-variable -Wno-error=unused-function" ./configure --prefix=/usr/local/toolchain-arm-linux-elf --target=arm-linux-elf 
make 
make install 

EDIT: Я просто заметил, что Binutils настроить скрипт принимает --disable-werror аргумента, который отключает Gcc токарного предупреждения в ошибки и устраняет необходимость для настройки CFLAGS. С учетом этого аргумента здание может быть выполнено следующим образом:

./configure --prefix=/usr/local/toolchain-arm-linux-elf --target=arm-linux-elf --disable-werror 
make 
make install 
+0

binutils 2.25, возможно, не проблема? – rogerdpack

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