C++ 如何在boost.build.root中指定链接器依赖项
当我尝试使用C++ 如何在boost.build.root中指定链接器依赖项,c++,boost,clang,bjam,boost-build,C++,Boost,Clang,Bjam,Boost Build,当我尝试使用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_
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
我相信我在/boost/date\u time//boost\u date\u time
上指定libCDef
的链接依赖性的方式可能不足以在链接过程中获得正确的顺序
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
;
项目:使用要求~/infra\u安装;
lib-CDef
:[glob*.cpp]
:
/boost/date\u time//boost\u date\u time
/boost/filesystem//boost\u文件系统
/boost/system//boost\u系统
/boost/iostreams//boost\u iostreams
静止的
;
安装libCDef
:CDef
:LIB
发布:“~/infra\u安装/lib”
:释放
;
我需要指定CDef取决于boost_date_time,因此链接器应该按此顺序进行订购。基于
这是渡边捷文的贡献。
我试图通过使用
命令来帮助链接器。虽然这对gcc有效,但对clang linux和intel linux则不然
然后Kohei Takashi告诉我解决方案,那就是修改clang linux.jam和英特尔linux.jam
不幸的是,这是boost.build电子邮件组上的对话,但谢谢大家 请澄清您的问题:我假定您的第一个链接命令失败,如果是,链接错误是什么?哪个图书馆是罪魁祸首?你读过Boost.Build文档了吗?特别是
linkflags
部分。@rhalbersma我可以尝试将boost\u date\u time添加到此exe中的linkflags
。但我真正想指定的是,无论哪个exe链接到libCDef
,它也是我项目的一部分,都需要将boost\u date\u time
添加到linker命令中。