如何为新安装的 Boost 添加编译器包含路径和链接器库路径?
Posted
技术标签:
【中文标题】如何为新安装的 Boost 添加编译器包含路径和链接器库路径?【英文标题】:How to add compiler include paths and linker library paths for newly installed Boost? 【发布时间】:2011-05-06 15:14:20 【问题描述】:我有 RHEL 5.2,安装了 Boost 1.33。 我下载了 boost_1_44_0.tar.bz2。并建造了它。完成后显示:
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
/home/dfe/Archive/boost_1_44_0
The following directory should be added to linker library paths:
/home/dfe/Archive/boost_1_44_0/stage/lib
-
如何添加上述包含路径?
当我执行“rpm -q boost”时,它显示 boost-1.33.1-10.el5。为什么会这样,我安装的是 1.44 版?
有没有更好的方法来安装最新版本的 Boost?
【问题讨论】:
【参考方案1】:在 Linux 系统上安装软件总是需要三个步骤:
-
配置——“检查”
make —“在当前目录中构建软件”
make install —“将文件复制到系统,以便其他软件可以使用该软件”
你可能做了make
的等价物,但没有做make install
的等价物。你需要运行
sudo ./b2 install
运行后./b2
【讨论】:
这对我的 Debian8 很有帮助。【参考方案2】:只需像这样将路径添加到您的 .bashrc 或 .profile(或任何漂浮的东西):
export LIBS="-L/home/dfe/Archive/boost_1_44_0/stage/lib"
export CPPFLAGS="-I/home/dfe/Archive/boost_1_44_0"
【讨论】:
不知道为什么这被否决了......有人可以解释这个答案有什么问题吗?【参考方案3】:您必须将这些目录包含到您将用于构建应用程序的 makefile 中
CC -I/home/dfe/Archive/boost_1_44_0 -L/home/dfe/Archive/boost_1_44_0/stage/lib yourprogram.cpp
-I 选项将 dir 添加到搜索#include 文件的目录列表中。
-L 选项将 dir 添加到链接器搜索库的目录列表中
CC 是 sun 编译器...
【讨论】:
耶!有效!谢谢!虽然我的意图是让旧版本的 Boost 完全被新版本取代。现在,/usr/include/boost/ 中的文件似乎已经更新,但是在我使用的每个程序中一直链接到 /home/dfe/Archive/boost_1_44_0 文件夹很烦人。我能做些什么让 1_44_0 成为默认版本?【参考方案4】:首先,我删除了现有的 boost rpm 使用
rpm -e boost-1.33.1-10.el5
显示一条消息“错误:“boost”指定多个包”
然后尝试:
rpm -e --allmatches boost
(我不记得我输入的是“boost”还是“boost-1.33.1-10.el5”)
显示了具有依赖关系的包。 我做到了:
rpm -e [packagename1]
rpm -e [packagename2]
以此类推然后做了:
rpm -e --allmatches
这完全从我的系统中删除了提升。
然后我使用 tar -xvjf boost_1_44_0.tar.bz2 提取 boost_1_44_0.tar.bz2 并运行引导程序:
./bootstrap.sh
然后将 bjam 运行为:
./bjam install
就是这样! Boost 安装在我的系统上,我在编译程序时不必指定任何链接器选项!耶! 现在'rpm -q boost'命令显示没有安装任何包。
【讨论】:
这里的关键是 ./bjam install,因为说明看起来像 ./b2 是用于安装的命令。 关于./b2
与./bjam
的使用:boost.org/build/doc/html/bbv2/faq/names.html以上是关于如何为新安装的 Boost 添加编译器包含路径和链接器库路径?的主要内容,如果未能解决你的问题,请参考以下文章