如何在boost中指定链接器依赖项.构建Jamroot

How to specify linker dependencies in boost.build Jamroot

本文关键字:依赖 构建 Jamroot 链接 boost      更新时间:2023-10-16

当我尝试用b2 toolset=clang编译exec时,它使用链接命令,如:

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

我认为我指定libCDef/boost/date_time//boost_date_time的链接依赖的方式可能不足以在链接期间有正确的顺序。

CDef/Jamroot:

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,因此链接器应该这样排序。

基于http://www.boost.org/boost-build2/doc/html/bbv2/faq/liborder.html本文由Steven Watanabe贡献。我试图通过使用<use>命令来帮助链接器。虽然gcc可以工作,但对于clang-linux和intel-linux却不行。

然后Kohei Takashi告诉我解决方案,那就是修改clang-linux。intel-linux.jam

https://svn.boost.org/trac/boost/ticket/5820

不幸的是,这段对话正在进行中。建立电子邮件组,但是谢谢大家!