为什么在编译 Boost 时会使用 "arm-linux-gnueabi-g++"?
Why is "arm-linux-gnueabi-g++" used when compiling Boost?
我正在尝试在Ubuntu Linux 12.04上手动编译Boost。但是,它似乎正在尝试交叉编译,即使我没有告诉它。
这些是我使用的命令:
git clone https://github.com/boostorg/boost
git checkout boost-1.60.0
git submodule init
git submodule update
cd tools/build/
./bootstrap.sh
sudo ./b2 install --prefix=/usr/local/
cd ../../
sudo b2 -j12 --build-dir=/tmp/build_boost --build-type=complete toolset=gcc address-model=64 architecture=x86 threading=multi runtime-link=shared stage --layout=tagged
最后一个命令失败,给出各种编译错误,都类似于下面显示的第一个:
gcc.compile.c++ /tmp/build_boost/boost/bin.v2/libs/system/build/gcc-arm/release/address-model-64/architecture-x86/threading-multi/error_code.
arm-linux-gnueabi-g++: error: unrecognized command line option ‘-m64’
"arm-linux-gnueabi-g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -pthread -fPIC -m64 -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_DYN_LINK=1 -DNDEBUG -I"." -c -o "/tmp/build_boost/boost/bin.v2/libs/system/build/gcc-arm/release/address-model-64/architecture-x86/threading-multi/error_code.o" "libs/system/src/error_code.cpp"
...failed gcc.compile.c++ /tmp/build_boost/boost/bin.v2/libs/system/build/gcc-arm/release/address-model-64/architecture-x86/threading-multi/error_code.o...
如何确保它使用本机 g++(对于 x86-64)?
发现问题:我的主目录中有一个user-config.jam(可能在交叉编译测试期间临时存储)。我只是发现,因为从/usr/bin/
中删除所有arm-linux-gnueabi-*
文件会导致以下错误:
/home/janito/boost/tools/build/src/tools/gcc.jam:83: in gcc.init from module gcc
error: toolset gcc initialization:
error: provided command 'arm-linux-gnueabi-g++' not found
error: initialized from /home/janito/user-config.jam:45
/home/janito/boost/tools/build/src/build/toolset.jam:43: in toolset.using from module toolset
/home/janito/boost/tools/build/src/build/project.jam:1052: in using from module project-rules
/home/janito/user-config.jam:45: in modules.load from module user-config
/home/janito/boost/tools/build/src/build-system.jam:249: in load-config from module build-system
/home/janito/boost/tools/build/src/build-system.jam:389: in load-configuration-files from module build-system
/home/janito/boost/tools/build/src/build-system.jam:524: in load from module build-system
/home/janito/boost/tools/build/src/kernel/modules.jam:295: in import from module modules
/home/janito/boost/tools/build/src/kernel/bootstrap.jam:139: in boost-build from module
/home/janito/boost/boost-build.jam:17: in module scope from module
至少解决方案只是删除~/user-config.jam文件。
将其发布为答案,以便在将来有人遇到相同情况时会很有用。
相关文章:
- 最终的ARM Linux内存碎片与NEON Copy,但不是memcpy
- QT创建者:Arm-Linux-androideabi-G :找不到
- beaglebone上的GTK 绑定(ARM Linux)
- 如何使用 arm-linux-gcc 交叉编译 gmock
- arm linux gnueabi cannot find `-lz`
- arm-linux-androideAB-G++ 找不到标头 CSTDARG
- 在beaglebone black上使用arm-linux-gnueabihf时跳过不兼容错误
- 我在哪里可以找到arm-linux-gneabihf-ld的手册页,更不用说写得很好的手册页了,其中包括-rpath和-
- 静态 opencv 在 Arm Linux busybox 上找不到 USB 网络摄像头
- arm-linux-gnueabihf-g++ 是否有可靠的 C++0x 支持?
- 如何使用Arm-Linux-androideabi编译器
- Cocos2dx 安卓构建错误:"arm-linux-androideabi-g++: No such file or directory"
- ARM Linux 中的队列库
- 为什么在编译 Boost 时会使用 "arm-linux-gnueabi-g++"?
- Android NDK - arm-linux-androideabi-g++: not found
- arm-linux-androidabi/bin/ld:致命错误:-soname:必须采用非空参数
- Stringization char '#' 在 arm-linux-androideabi-gcc 上使用 c/c++ 宏
- 当使用g++-arm-linux-gnueabi时,包含C++系统头的正确方式
- 使用arm-linux- gnuabi -g++ -o时出现段故障,不使用-o也不会出现问题
- 交叉编译libcurl for arm-linux-gnueabi-gcc