您的位置:首页 > 运维架构 > Linux

VMware Debian Linux 5.0 图形界面配置boost_1_52_0 [大三四八九月实习]

2013-09-27 13:44 489 查看
已经在windows之上配置号boost_1_54_0的环境,可偏偏在Debian Linux 5.0上配置不了,每次用./b2进行编译的时候,虚拟机就直接死掉。然后见到匿名博兄[Linux
编译boost库]文章后,念想着编译一下boost_1_52_0试试。然后就成功了,感谢152博兄。下面记录编译过程。



1.下载unix版本的boost_1_52_0

下载地址:boost官网unix版本
boost_1_52_0.tar.bz2。

此步骤是在windows之上下载的,估计直接在VMware内Debian Linux中下载也可以。因为安装了VMware的vmware tools[VMware为图形界面安装vmware
tools],故而可以将下载的压缩包直接托进Debian Linux桌面之上[Debian Linux图形界面]。



图表 1:Linux版本boost_1_52_0

2 编译配置boot库

(1)拷贝boost库至opt[此目录可选]目录解压

在Debian Linux中,桌面是普通用户的一个子目录。进入命令行终端,使用root权限将boost库压缩包拷贝到/opt下解压:



图表 2:Debian 命令行终端
各个命令的含义如下:

su 获取root权限,回车后可输入root账号密码就可以获取root权限。
cp 将桌面之上的boost压缩包拷贝至/opt目录下。
bzip2 Linux下压缩后缀为.bz2的文件,以上用法是将.bz2压缩包转换为.tar压缩包。

tar 解压boost_1_52_0.tar,在本目录下得到解压的boost_1_52_0。

(2)运行bootstrap.sh

bootstrap.sh在解压目录boost_1_52_0下,在Linux下运行此文件生成b2和bjam文件(windows之上运行bootstrap.bat)。

cd boost_1_52_0

./bootstrap.sh

(3)修改user-config.jam文件

user-config.jam位于boost_1_52_0/tools/build/v2/下,用vi命令将其打开后可直接在文件末尾加如下两行:

using gcc ;

using mpi ;

(4)运行b2

b2是运行bootstrap.sh时生成的,用此命令可以根据运行bootstrap.sh后的提示用./b2
–help查看其使用方式。它的用法跟在windows之上差不多。也可以直接使用下面的简单的方式完成boost库的编译。

sudo ./b2 install

不加sudo编译后boost::thread库编译会有错误。
从./b2 –help中可以得到,此种方式的编译会让boost库生产的所有的头文件在/usr/local/include/boost下,boost生成的库文件在/usr/local/lib下。
为了能够正确使用boost库,需要将在/usr/local/lib下的boost库拷贝到/usr/lib下,在命令行终端使用cp
/usr/local/lib/libboost** /usr/lib命令完成拷贝。

这个过程会花一段时间来完成。台式机和Linux都不会花很多时间,半个小时左右,很大可能都是半个小时左。为了测试编译有没有成功,就编写一个使用boost库的程序试试,由于timer库不编译也能使用,故而是用thread库来测试一下。



3 boost库测试

在Debian Linux 下用gedit编写以下一段C++代码:

#include <iostream>
#include <boost/thread.hpp>

using namespace std;
using namespace boost;

#define BOOST_DATE_TIME_SOURCE
#define BOOST_THREAD_NO_LIB

//Function decalration
void print_string( const string &str );

int main(void)
{
	thread my_thread1( print_string, "hello" );
	return 0;
}

//Function definition
void print_string( const string &str )  
{  
        int i;  
  
        for( i = 0; i < str.length(); ++i ){  
        	cout << str[i];  
	}  
	cout << "\n";
          
}



然后在终端编[进入终端]译boost_thread.cpp文件:



图表 3:编译boost_thread.cpp
进入boost_thread.cpp文件目录后就使用gcc编译该文件,与字符界面不同的是,此时gcc不用再链接C++库。只需要链接boost库。规律为:-lboost为链接前缀,libraryname为对应的库名。如编译boost库的thread程序时,编译链接参数为:-lboost_thread


Note Over。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: