0

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

ブーストの未定義の参照の長いリストで失敗しますが、次の並べ替えられたバージョンは正常にリンクします:

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

libCDefonのリンク依存関係を指定している方法は、/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 に依存することを指定する必要があるため、リンカーはそのように注文する必要があります。

4

1 に答える 1

0

http://www.boost.org/boost-build2/doc/html/bbv2/faq/liborder.htmlに基づく これは、Steven Watanabe によって寄稿されました。<use>コマンドを使用してリンカーを支援しようとしました。これは gcc では機能しましたが、clang-linux と intel-linux では機能しませんでした。

それから Kohei Takashi は、clang-linux.jamintel- linux.jam を修正するという解決策を私に教えてくれました。

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

残念ながら、これはメール グループ boost.build での会話でしたが、ありがとうございました!

于 2013-05-08T19:15:54.270 に答える