为什么在编译 Boost 时会使用 "arm-linux-gnueabi-g++"?

Why is "arm-linux-gnueabi-g++" used when compiling Boost?

本文关键字:arm-linux-gnueabi-g++ 编译 Boost 为什么      更新时间:2023-10-16

我正在尝试在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文件。

将其发布为答案,以便在将来有人遇到相同情况时会很有用。