Я пытаюсь создать binutils для генерации кода MIPS в Mac OS X.
Я нашел этот сайт (http://www.theairportwiki.com/index.php/Building_a_cross_compile_of_GCC_for_MIPS_on_OS_X) из Как собрать GCC 4.8.x на хосте Mac OS X для цели MIPS и следовал инструкциям.
Я установил gcc-4.8 из brew и установил исходный код binutils и gcc. Это настройка опции компиляции.
$ export CC=/usr/local/bin/gcc-4.8
$ export CXX=/usr/local/bin/g++-4.8
$ export CPP=/usr/local/bin/cpp-4.8
$ export LD=/usr/local/bin/gcc-4.8
$ export PREFIX=/opt/cross/gcc-mips
$ export CFLAGS=-Wno-error=deprecated-declarations
Затем я настраиваю и делаю bintuils.
Проблема в том, что после сборки статических библиотек у меня появляется сообщение об ошибке, что архив не создан для x86_64
, а затем у меня возникает куча ошибок с неопределенными символами.
ignoring file ./../intl/libintl.a, file was built for archive which is not the architecture being linked (x86_64): ./../intl/libintl.a
Undefined symbols for architecture x86_64:
"__bfd_abort", referenced from:
_fix_new_internal in write.o
_size_seg in write.o
Погуглив, я обнаружил, что мне нужно настроить переменную AR (архив) также из https://github.com/tpoechtrager/osxcross/issues/11. Я добавил export AR=/usr/local/bin/gcc-ar-4.8
, но у меня другое сообщение об ошибке, потому что gcc-ar-4.8 не работает.
/usr/local/bin/gcc-ar-4.8
/usr/local/bin/gcc-ar-4.8: Cannot find plugin 'liblto_plugin.so'
Снова погуглил и обнаружил, что gcc-ar не работает с Mac OS X (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56893).
gcc-ar is for use with newer GNU binutils only as that is the only ar which supports plugins.
Apple's ar does not support plugins (though it could be made to; it will be a different plugin interface than the GNU BFD
plugin interface which GCC supports right now).
Я только что создал тупой файл liblto_plugin.so в каталоге /usr/local/Cellar/gcc48/4.8.4/libexec/gcc/x86_64-apple-darwin14.3.0/4.8.4
, чтобы подавить сообщение об ошибке, но в этом случае похоже, что /usr/ar
вызывается, когда я использую /usr/bin/gcc-ar-4.8
для получения той же архитектуры и ошибки неопределенных символов.
Как решить эти вопросы? Как создать инструменты кросс-компилятора (gcc и binutils) в Mac OS X?
CFLAGS
через env, это часто является причиной проблем (то есть некоторые внутренниеCFLAGS
вещи тогда не будут установлены). Вы также можете избавиться отCPP
иLD
, в этом нет необходимости. Вам также следует подумать о заменеPREFIX
на./configure --prefix
. - person Thomas   schedule 20.06.2015export CFLAGS+=-Wno-error=deprecated-declarations
, чтобы получить ту же ошибку. - person prosseek   schedule 20.06.2015CFLAGS
вообще, даже установкаCFLAGS
может вызвать проблемы (серьезно!). Вы уверены, что это ошибка, а не просто предупреждение? - person Thomas   schedule 20.06.2015--disable-werror
? - person Thomas   schedule 20.06.2015