已经在windows之上配置号boost_1_54_0的环境,可偏偏在Debian Linux 5.0上配置不了,每次用./b2进行编译的时候,虚拟机就直接死掉。然后见到匿名博兄[Linux 编译boost库]文章后,念想着编译一下boost_1_52_0试试。然后就成功了,感谢152博兄。下面记录编译过程。
下载地址: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
在Debian Linux中,桌面是普通用户的一个子目录。进入命令行终端,使用root权限将boost库压缩包拷贝到/opt下解压:
图表 2:Debian 命令行终端
各个命令的含义如下:
tar 解压boost_1_52_0.tar,在本目录下得到解压的boost_1_52_0。
bootstrap.sh在解压目录boost_1_52_0下,在Linux下运行此文件生成b2和bjam文件(windows之上运行bootstrap.bat)。
cd boost_1_52_0 ./bootstrap.sh |
user-config.jam位于boost_1_52_0/tools/build/v2/下,用vi命令将其打开后可直接在文件末尾加如下两行:
using gcc ; using mpi ; |
b2是运行bootstrap.sh时生成的,用此命令可以根据运行bootstrap.sh后的提示用./b2 –help查看其使用方式。它的用法跟在windows之上差不多。也可以直接使用下面的简单的方式完成boost库的编译。
sudo ./b2 install |
这个过程会花一段时间来完成。台式机和Linux都不会花很多时间,半个小时左右,很大可能都是半个小时左。为了测试编译有没有成功,就编写一个使用boost库的程序试试,由于timer库不编译也能使用,故而是用thread库来测试一下。
在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。