当我尝试用它编译一个 exec 时,b2 toolset=clang
它使用如下链接命令:
clang++ -L/apps/bzip2/lib -L/apps/zlib/lib -o fixfast/bin/clang-linux-3.3/release/link-static/fixfast-mds_MCAST fixfast/bin/clang-linux-3.3/release/link-static/fixfastDataD.o /apps/boost/root/bin.v2/libs/date_time/build/clang-linux-3.3/release/link-static/libboost_date_time.a ~/infra_install/lib/libfixfast.a ~/infra_install/lib/libCDef.a -lbz2 -lz -lpthread
并且在 boost 中出现一长串未定义的引用而失败,而以下重新排序的版本可以很好地链接:
clang++ -L/apps/bzip2/lib -L/apps/zlib/lib -o fixfast/bin/clang-linux-3.3/release/link-static/fixfast-mds_MCAST fixfast/bin/clang-linux-3.3/release/link-static/fixfastDataD.o ~/infra_install/lib/libfixfast.a ~/infra_install/lib/libCDef.a /apps/boost/root/bin.v2/libs/date_time/build/clang-linux-3.3/release/link-static/libboost_date_time.a -lbz2 -lz -lpthread
我相信我指定 on 的链接依赖的libCDef
方式/boost/date_time//boost_date_time
可能不足以在链接期间获得正确的顺序。
CDef/果酱根:
project : usage-requirements <include>~/infra_install ;
lib CDef
: [ glob *.cpp ]
:
<library>/boost/date_time//boost_date_time
<library>/boost/filesystem//boost_filesystem
<library>/boost/system//boost_system
<library>/boost/iostreams//boost_iostreams
<link>static
;
install libCDef
: CDef
: <install-type>LIB
<variant>release:<location>"~/infra_install/lib"
: release
;
我需要指定 CDef 取决于 boost_date_time ,因此链接器应该这样订购它。