Ошибка компиляции в boost iostreams при сборке из исходного кода - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь собрать из исходного кода бинарный файл Linux, который использует Boost iostreams.Boost также построен из исходного кода на моей машине.Я получаю следующее сообщение об ошибке, которое, по-видимому, является ошибкой компиляции в Boost:

g++  -g -O2   -o mkdssp src/dssp.o src/iocif.o src/mas.o src/mkdssp.o src/primitives-3d.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread -lpthread  
src/mkdssp.o: In function `boost::iostreams::detail::bzip2_decompressor_impl<std::allocator<char> >::~bzip2_decompressor_impl()':
/usr/local/include/boost/iostreams/filter/bzip2.hpp:361: undefined reference to `boost::iostreams::detail::bzip2_base::end(bool, std::nothrow_t)'
src/mkdssp.o: In function `boost::iostreams::detail::bzip2_compressor_impl<std::allocator<char> >::~bzip2_compressor_impl()':
/usr/local/include/boost/iostreams/filter/bzip2.hpp:321: undefined reference to `boost::iostreams::detail::bzip2_base::end(bool, std::nothrow_t)'

Я видел подобные посты в других местах, но нет рецептов обходного пути.Обратите внимание, что у меня нет sudo на моей машине, поэтому выполнение rpm install this или yum install that на самом деле не вариант для меня;я думаю, что я ищу инструкции по восстановлению boost.

Мои версии:

  • Boost 1.69.0
  • bzip2-1.0.6 (такжепостроен из исходного кода)
  • CentOS 7
  • Linux 3.10.0-862.14.4.el7.x86_64

Заранее спасибо

1 Ответ

0 голосов
/ 25 февраля 2019

Вам необходимо добавить -L<boost-libs-dir> -Wl,-rpath=<boost-libs-dir> в командные строки вашего компоновщика.<boost-libs-dir> - это место, где находятся созданные вами библиотеки повышения, например, /usr/local/lib, поскольку ваши заголовки повышения находятся в /usr/local/include.

Если вы не указали --layout=system при создании повышения, то вам также необходимоукажите номера версий в именах библиотек, например, -lboost_thread-gcc-mt-1_61 или что-то в этом роде.Прочитайте Boost Library Naming для получения полной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...