在尝试安装 Boost 1.49 时,当我到达使用 bjam
的阶段时,我不断遇到一个持续存在的问题。脚本。作为引用,我遵循安装说明 linked here ,但我也引用了 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
中创建文件夹的权限问题。 。所以我 chmoded /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
中的版本,但我不知道为什么它们不是或者如何改变它所以它们是。
最佳答案
我遇到了同样的问题,直到我意识到用于运行 bjam 命令的用户名没有写入 /usr/include
目录的权限。
您需要运行 bjam 命令:
sudo ./bjam --your-options--
关于c++ - 尝试在 Ubuntu 11.04 上安装 Boost 1.49 时跳过 <dir> 因为缺少 ... 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952647/