Возможно, что версия boost, которую вы получаете из репозитория Ubuntu, слишком старая (рекомендуется здесь , что самая высокая версия для 8.10 - 1.35; похоже, ваш скрипт configure запрашивает для 1,37). Возможно, вам придется строить из исходного кода; в ответах на вопрос, на который я ссылаюсь, есть дополнительная информация, которая, надеюсь, поможет.
UPDATE:
Судя по вашей новой ошибке, похоже, что configure
теперь не может найти библиотеку boost_iostreams. В моей системе это /usr/lib/libboost_iostreams-mt.[a|so]
- есть ли у вас эти файлы (возможно, в другом каталоге, в зависимости от того, где вы установили boost)?
Вы также можете попробовать запустить ldconfig
в случае отсутствия символической ссылки (скажем, с
libboost_iostreams-mt.so.1.37.0
до libboost_iostreams-mt.so
).
Этот configure
генерируется GNU autoconf
? Если это так, в том же каталоге должен быть файл с именем config.log
, содержащий список всех команд, которые configure
пытались выполнить при поиске вещей. Если там есть что-нибудь о boost_iostreams
, не могли бы вы опубликовать это?
Одно совершенно случайное предположение: некоторые примеры, которые я нашел в веб-ссылке на boost_iostreams
без суффикса многопоточности -mt
- но у меня их вообще нет на моей машине. Может быть, ваш configure
скрипт сталкивается с той же проблемой?
ОБНОВЛЕНИЕ 2
Сценарий configure
, похоже, ищет однопоточную отладочную сборку библиотеки boost iostreams, которая не будет создаваться по умолчанию при сборке из исходного кода в linux. Кроме того, по умолчанию в linux нет имен библиотек в зависимости от конфигурации сборки (поэтому библиотеки, которые вы нашли в /usr/lib
, могут не совпадать с теми, которые вы установили из исходного кода, если вы не переопределите это). На самом деле это не объясняется на веб-сайте boost, я узнал об этом только из файла Jamroot
(тоже работает bjam --help
)! В любом случае, чтобы получить библиотеку с правильной конфигурацией сборки и правильным именем, мне нужно перейти в корень дерева исходных текстов надстройки и запустить:
sudo bjam --with-iostreams --layout=tagged variant=debug threading=single install
Для меня это помещает библиотеки (libboost_iostreams-d.a
и общие версии) в /usr/local/lib
, где ld
найдет их по умолчанию, так что это должно быть хорошо. Если вам нужно, чтобы они пошли куда-то еще, вы можете использовать опцию --prefix=...
, например, bjam
. если вы хотите их в /usr/lib
, вы можете сделать --prefix=/usr
. Если пакет, который вы собираете, нуждается в большем количестве библиотек наддува, вы можете удалить --with-iostreams
, и тогда они все будут собраны (или замените iostream
на имя нужной вам библиотеки).
Дополнительное замечание: мне пришлось установить пакет libbz2-dev
, чтобы получить boost iostreams для сборки - здесь легко пропустить ошибку, если вы соберете все boost, так как есть очень много выходных!