如何添加编译器包括新安装的Boost的路径和链接库路径?

Nav*_*Nav 17 c++ linux boost build rpm

我有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
Run Code Online (Sandbox Code Playgroud)
  1. 如何添加上述包含路径?
  2. 当我执行"rpm -q boost"时,它显示boost-1.33.1-10.el5.当我安装1.44版本时,为什么会这样呢?
  3. 有没有更好的方法来安装最新版本的Boost?

小智 13

一个可能的原因是你只是"制造"而不是"make install".所以你应该运行"sudo ./b2 install"而不是"./b2"

在Linux系统中总有步骤安装软件1.配置"检查"2.制作"在当前目录中构建软件"3.制作安装"将文件复制到系统,以便其他软件可以使用该软件"

问题是你已经完成了两个步骤而最后一步还没有完成


Nav*_*Nav 11

首先,我使用了删除现有的boost rpm

rpm -e boost-1.33.1-10.el5
Run Code Online (Sandbox Code Playgroud)

将显示一条消息,指出"error:"boost"指定多个包"

然后尝试:

rpm -e --allmatches boost
Run Code Online (Sandbox Code Playgroud)

(我不记得我输入'boost'或'boost-1.33.1-10.el5')

显示了具有依赖关系的包.我做了:

rpm -e [packagename1]
rpm -e [packagename2]
Run Code Online (Sandbox Code Playgroud)

等等然后做了:

rpm -e --allmatches
Run Code Online (Sandbox Code Playgroud)

这完全取消了我的系统.

然后我使用tar -xvjf boost_1_44_0.tar.bz2解压缩boost_1_44_0.tar.bz2并运行bootstrap:

./bootstrap.sh
Run Code Online (Sandbox Code Playgroud)

然后运行bjam为:

./bjam install
Run Code Online (Sandbox Code Playgroud)

而已!Boost安装在我的系统上,在编译程序时我没有必要指定任何链接器选项!好极了!现在'rpm -q boost'命令显示没有安装包.

  • 这里的关键是./bjam install,因为说明看起来像./b2是用来安装的命令. (4认同)

小智 9

您必须将这些目录包含在makefile中,您将使用它来构建应用程序

CC -I/home/dfe/Archive/boost_1_44_0 -L/home/dfe/Archive/boost_1_44_0/stage/lib yourprogram.cpp
Run Code Online (Sandbox Code Playgroud)

-I选项将dir添加到搜索#include文件的目录列表中.

-L选项将dir添加到链接器搜索库的目录列表中

CC是sun编译器......


der*_*ael 9

只需将路径添加到.bashrc或.profile(或任何浮动你的船),如下所示:

export LIBS="-L/home/dfe/Archive/boost_1_44_0/stage/lib"
export CPPFLAGS="-I/home/dfe/Archive/boost_1_44_0"
Run Code Online (Sandbox Code Playgroud)