我正在尝试在Mac OS X上构建一个gcc交叉编译器,目标是
然而,在构建过程中我遇到了“invalid listing option”错误。
然后,使用
我的猜测是苹果的汇编器
可能出了什么问题?如何解决这个问题?
arm-elf-eabi
。
到目前为止,我已经完成了以下工作:
安装gcc和环境设置
我试图不使用来自Mac的clang/llvm,所以我使用了来自brew的gcc-4.8。
brew tap homebrew/versions
brew install gcc48
brew install binutils
在构建之前,我设置了环境变量:
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
export TARGET=arm-elf-eabi
构建binutils
下载binutils源码,然后创建一个构建目录,就可以顺利地构建binutils:
mkdir build-binutils
cd build-binutils
../binutils-2.24/configure --target=$TARGET --prefix=$PREFIX --with-sysroot --enable-64-bit-bfd --disable-shared --disable-werror --disable-nls
make configure-host
make LDFLAGS="-all-static"
sudo make install
构建GCC
下载GCC 4.8源代码并运行构建过程。
mkdir build-gcc
cd build-gcc
../gcc-4.8.3/configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c,c++ --without-headers --disable-shared --enable-multilib --with-sysroot --disable-werror
make configure-host
make all-gcc << ERROR
make all-target-libgcc
然而,在构建过程中我遇到了“invalid listing option”错误。
/usr/local/bin/g++-4.8 -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../gcc-4.8.3/gcc -I../../gcc-4.8.3/gcc/build -I../../gcc-4.8.3/gcc/../include -I../../gcc-4.8.3/gcc/../libcpp/include \
-o build/genconstants.o ../../gcc-4.8.3/gcc/genconstants.c
Assembler messages:
Fatal error: invalid listing option `r'
make[2]: *** [build/genconstants.o] Error 1
make[1]: *** [all-gcc] Error 2
另类构建方式
我尝试使用Mac自带的默认编译器,并按照以下配置进行:
./contrib/download_prerequisites
CFLAGS="-arch i386 -arch x86_64 -Wno-error=deprecated-declarations -Wno-error=unused-variable -Wno-error=unused-function" ../gcc-4.8.3/configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c --without-headers --disable-shared --enable-multilib
然后,使用
make all-gcc
时很好用,但是我在make all-target-libgcc
时遇到了不同的错误,所以我将继续使用gcc方法而不是clang/llvm方法。我的猜测是苹果的汇编器
as
在处理gcc给出的参数时可能有问题(因为clang/llvm没有问题)。可能出了什么问题?如何解决这个问题?