Когда я пытаюсь скомпилировать 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
Я считаю, что способ, которым я указываю связь зависимости 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
Этому способствовал Стивен Ватанабе.
Я пытался помочь компоновщику с помощью <use>
команды. Хотя это работает для gcc, для clang-linux и intel-linux это не так.
Тогда Кохей Такаши просвещал меня к решению, которое должно было изменить лязг-linux.jam а также Intel-linux.jam
https://svn.boost.org/trac/boost/ticket/5820
К сожалению, это был разговор о почтовой группе boost.build, но спасибо, ребята!
Других решений пока нет …