2010-11-08 76 views
12

我有RHEL 5.2,安装了Boost 1.33。 我下载了boost_1_44_0.tar.bz2。并建立它。在完成这表明:如何为新安装的Boost添加编译器包含路径和链接器库路径?

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 
  1. 如何添加提到包括路径上面?
  2. 当我做“rpm -q boost”时,它会显示boost-1.33.1-10.el5。为什么这样,当我安装版本1.44?
  3. 有没有更好的方法来安装最新版本的Boost?

回答

10

首先,我删除了使用

rpm -e boost-1.33.1-10.el5 

现有的升压转一条消息显示“错误:”提升“指定多个包”

然后尝试:

rpm -e --allmatches boost 

(我不记得我是否键入“升压”或“提高-1.33.1-10.el5”)被证明

与依赖的包。 我所做的:

rpm -e [packagename1] 
rpm -e [packagename2] 

等,然后做:

rpm -e --allmatches 

这抹去我的系统完全提升。

然后我提取boost_1_44_0.tar.bz2使用tar -xvjf boost_1_44_0.tar.bz2与跑引导:

./bootstrap.sh 

然后跑的bjam为:

./bjam install 

这就是它! Boost被安装在我的系统上,并且在编译程序时我不必指定任何链接器选项!好极了! 现在'rpm -q boost'命令显示没有安装软件包。

+3

这里的关键是安装./bjam,因为这些说明使得它看起来像./b2是用来安装的命令。 – 2014-03-16 14:37:05

+0

关于使用'./b2'和'./bjam':http://www.boost.org/build/doc/html/bbv2/faq/names.html – digawp 2015-11-16 08:34:47

8

你必须包括这些目录的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的编译器...

+1

耶!它的工作!谢谢!虽然我的目的是让老版的Boost被完全取代新版本,现在/ usr/include/boost /中的文件似乎已经更新了,但是仍然连接到/ home/dfe/Archive/boost_1_44_0我使用的每个程序中的文件夹。我可以做什么来使1_44_0成为默认版本? – Nav 2010-11-08 12:27:38

7

只是路径添加到您的.bashrc或.profile文件(或任何你的船浮筒)是这样的:

export LIBS="-L/home/dfe/Archive/boost_1_44_0/stage/lib" 
export CPPFLAGS="-I/home/dfe/Archive/boost_1_44_0" 
+0

不知道为什么这是downvoted ...可以有人解释这个答案有什么问题? – isomorphismes 2014-10-21 22:15:06

9

一个可能的原因是,你只是“做”而不是“让安装”。 所以你应该运行“sudo ./b2 install”不是“。/ B2"

也总有步骤安装软件在Linux系统 1.configure‘检查’ 2.make‘在当前目录下建立软件’ 3.make安装“文件拷贝到系统,使其他软件可以使用这个软件”

的问题是,你已经做了两步,最后一步没有做

+0

这对我的Debian8很有帮助。 – amirteymuri 2017-02-24 21:06:01