Пропущено <dir>из-за отсутствия ... ошибки при попытке установить Boost 1.49 на Ubuntu 11.04 - PullRequest
2 голосов
/ 31 марта 2012

При попытке установить 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, но я понятия не имею, почему они не являются или как их изменить, чтобы они были.

1 Ответ

2 голосов
/ 18 марта 2013

У меня была та же проблема, пока я не понял, что имя пользователя, которое я использовал для запуска команды bjam, не имело разрешения на запись в каталог /usr/include.

Вам необходимо выполнить команду bjam как:

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