При попытке установить Boost 1.49 у меня постоянно возникает проблема, когда я достигаю стадии, на которой я использую сценарий bjam
. Для справки, я следую инструкциям по установке по ссылке , но я также ссылался на страницу установки boost.org. Процедуры, по сути, идентичны, и обе дают одну и ту же проблему.
Я загрузил файл tar в каталог, в котором хранится все устанавливаемое программное обеспечение: /home/ely/Software/Boost/boost_1_49_0/
Я хочу установить Boost в каталог /usr/include/boost_1_49/
, поэтому я использую следующие команды:
$ ./bootstrap.sh --prefix=/usr/include/boost_1_49 --libdir=/usr/include/boost_1_49/lib
$ ./bjam variant=release link=shared install
Первая команда занимает немного времени, но, похоже, успешно выполняется и не дает ошибок. Вторая команда занимает намного больше времени, а затем последовательно выводит что-то вроде этого:
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/stdexcept for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/iomanip for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/new for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/fstream for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/set for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/locale for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/string for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/limits for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/complex for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/queue for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/stack for lack of /usr/include/boost_1_49/include/boost...
...skipped <p/usr/include/boost_1_49/include/boost>tr1/tr1/unordered_set for lack of /usr/include/boost_1_49/include/boost...
И внизу всех этих пропусков всегда написано:
...failed updating 28 targets...
...skipped 9778 targets...
Я неоднократно проверял сгенерированный файл проекта, project-config.jam
, и в нем перечислены правильные пути для переменных prefix
, exec-prefix
, libdir
и includedir
, поэтому я не думаю, что .jam
файл является проблемой.
Я также подумал, что это может быть проблема с разрешениями при создании папок в /usr/include
. Поэтому я переключил /usr/include/boost_1_49
на 777, попробовал команды еще раз и получил тот же результат.
Кто-нибудь имеет представление о том, как решить эту проблему и, в конечном итоге, как установить Boost, чтобы файлы можно было найти в /usr/include/boost_1_49/
?
Добавлена
Если я просто поместил файл tar в каталог, который мне нужен, /usr/include.boost_1_49
, тогда процесс установки завершится успешно без всех пропусков, и он скажет мне следующее:
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
/usr/include/boost_1_49
The following directory should be added to linker library paths:
/usr/include/boost_1_49/stage/lib
Но даже после добавления их в соответствующие .conf
файлы, которые я использую, и выдачи sudo ldconfig
для обновления путей, я получаю ошибки при попытке включить Boost. Например, если я пытаюсь включить файл boost/math/distributions.hpp
, я получаю сообщение об ошибке:
/usr/include/boost_1_49/boost/math/distributions.hpp:25: fatal error: boost/math/distributions/geometric.hpp: No such file or directory
Я вручную проверил, что файл geometric.hpp
находится в правильном месте, он просто не может его увидеть. Я предполагаю, что все #include <boost...>
строки в distributions.hpp
неправильно идентифицируют версию в /usr/include/boost_1_49
, но я понятия не имею, почему они не являются или как их изменить, чтобы они были.