默认情况下,在Buildroot中进行交叉编译时,不会构建包BR2_PACKAGE_BOOST_MPI
:它需要检测MPI(例如OpenMPI)配置和库,并且这是不可能的(在buildroot环境中) ),bjam
构建系统将通知Boost.MPI被跳过:
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
在我的环境中,我可以通过修补output/build/boost-1.61.0/user-config.jam
:
using gcc : 6.2.0 :
/home/me/buildroot-2016.11/output/host/usr/bin/arm-buildroot-linux-gnueabihf-g++ :
<cxxflags>"-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os " <linkflags>"" ;
using mpi : /home/me/buildroot-2016.11/output/host/usr/bin/arm-buildroot-linux-gnueabihf/g++ :
<find-shared-library>mpi <find-shared-library>dl ;
(第一行是构建系统配置的user-config.jam
的唯一内容;我添加了第二行。此外,还修改了路径。)
注意:我通过查看mpi.jam来源和大量试用错误来获取该bjam行。
但是,任何干净的重建都会删除output/build
目录,从而擦除这些更改。
在与Buildroot交叉编译时,是否有一种“正确”的方法可以编译Boost.MPI?或者至少,在构建系统配置编译器之后能够修补user-config.jam
文件吗? (请注意,路径取决于我的系统配置和目标主机。)