我正在尝试为 PowerPC 架构交叉编译 Boost 库(线程、系统)。我按照以下步骤操作,但遇到了问题。
我运行一个 shell 脚本来设置我的工具链。编译器 ppc_4xx-g++ 在 shell 中可见。
后续步骤:
- 添加行“使用 gcc : power : ppc_4xx-g++ ;” 到文件 user-config.jam
- 在根目录中运行 ./bootstrap.sh --prefix=BoostPowerPC。
- 运行 ./b2 install --build-dir=BoostPowerPC toolset=gcc-power --with-thread --with-system 阶段
结果:创建了所有目录,但编译失败。我无法附上错误日志(请将您的电子邮件发送给我,以便我可以在需要时将错误日志发送给您)。下面是错误日志的快照。
Component configuration:
- atomic : not building
- chrono : not building
- context : not building
- date_time : not building
- exception : not building
- filesystem : not building
- graph : not building
- graph_parallel : not building
- iostreams : not building
- locale : not building
- math : not building
- mpi : not building
- program_options : not building
- python : not building
- random : not building
- regex : not building
- serialization : not building
- signals : not building
- system : building
- test : not building
- thread : building
- timer : not building
- wave : not building
...patience...
...found 20376 targets...
...updating 10110 targets...
common.mkdir BoostPowerPC
common.mkdir BoostPowerPC/lib
common.mkdir BoostPowerPC/boost
common.mkdir BoostPowerPC/boost/bin.v2
common.mkdir BoostPowerPC/boost/bin.v2/libs
common.mkdir BoostPowerPC/boost/bin.v2/libs/system
common.mkdir BoostPowerPC/boost/bin.v2/libs/system/build
common.mkdir BoostPowerPC/boost/bin.v2/libs/system/build/gcc-power
common.mkdir BoostPowerPC/boost/bin.v2/libs/system/build/gcc-power/release
common.mkdir BoostPowerPC/boost/bin.v2/libs/system/build/gcc-power/release/threading-multi
gcc.compile.c++ BoostPowerPC/boost/bin.v2/libs/system/build/gcc-power/release/threading-multi/error_code.o
In file included from ./boost/config/select_stdlib_config.hpp:18,
from ./boost/config.hpp:40,
from ./boost/system/config.hpp:13,
from libs/system/src/error_code.cpp:18:
/opt/ELDK/4.2/ppc_4xx/usr/include/c++/4.2.2/cstddef:50:28: error: bits/c++config.h: No such file or directory
In file included from /opt/ELDK/4.2/ppc_4xx/usr/include/c++/4.2.2/ios:43,
from /opt/ELDK/4.2/ppc_4xx/usr/include/c++/4.2.2/ostream:45,
from /opt/ELDK/4.2/ppc_4xx/usr/include/c++/4.2.2/iterator:70,
from ./boost/iterator.hpp:17,
from ./boost/operators.hpp:86,
from ./boost/system/error_code.hpp:17,
from libs/system/src/error_code.cpp:19:
.
.
.
它抱怨找不到文件 c++config.h。但该文件位于 /opt/ELDK/4.2/usr/include/c++/4.2.2/powerpc-linux/bits 目录中
然后我尝试在 b2 命令中使用标签“include”。但随后我收到一个错误,即找不到文件 cstddef,该文件位于目录 /opt/ELDK/4.2/usr/include/c++/4.2.2 中。我想我已经写完了包含路径。
你认为是什么问题?为什么即使文件存在,我的编译器也找不到该文件?有什么建议么 ?
更新:
我使用了 -d+2 和 -q 选项,结果如下。
"ppc_4xx-g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -pthread -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_DYN_LINK=1 -DNDEBUG -I"." -I"/opt/ELDK/4.2/ppc_4xx/usr/include" -c -o "BoostPowerPC/boost/bin.v2/libs/system/build/gcc-power/release/threading-multi/error_code.o" "libs/system/src/error_code.cpp"
编译日志:
In file included from ./boost/config/select_stdlib_config.hpp:18,
from ./boost/config.hpp:40,
from ./boost/system/config.hpp:13,
from libs/system/src/error_code.cpp:18:
/opt/ELDK/4.2/ppc_4xx/usr/include/c++/4.2.2/cstddef:50:28: error: bits/c++config.h: No such file or directory
正如我们所见,包含所需文件的较高目录对编译器可见。我什至尝试使用 -L 命令并指定根目录。它仍然没有帮助。
我检查了 ppc_4xx-g++ 的编译选项和我感兴趣的 2 个选项
--sysroot=:这是编译器使用的所有包含和库的根目录。
-B :使用它我们可以为编译器添加搜索路径。
我都试过了,但没有帮助。有什么建议么 ?