如何为新安装的 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 添加编译器包含路径和链接器库路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 android 构建 boost::locale

boost1.7 centos7编译

如何为 xcode 添加全局包含路径

如何为“类似boost”的多组件库编写cmake模块?

使用 Eclipse:如何为所有 C/C++ 项目添加包含路径和库

新安装的jdk,不知道为啥一直走别的jdk路径