linux下boost编译

++ linux下boost编译

每次编译boost总是得去网上搜索一番, 这次把过程记录一下.

boost最新版本下载地址: http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041

下载boost_1_39_0.tar.gz
tar -zxvf boost_1_39_0.tar.gz

然后进入解压缩后的文件夹编译boost的编译器jam cd boost_1_39_0\tools\jam ./build_dist.sh

编译完后在这个目录下有编译出的bjam文件 boost_1_39_0\tools\jam\stage\bin.linuxx86

把它copy到boost_1_39_0 然后在这个目录下运行命令编译: ./bjam “-sTOOLS=gcc” “–includedir=/usr/include” “–libdir=/usr/lib/boost” install

开始编译,等待编译完成,需很长时间. 关于bjam的后面的参数的设置: -sTOOLS=gcc 指定编译器为GCC –includedir=/usr/include/ 指定头文件的安装目录,我安装在/usr/include下.如果安装成功,将在/usr/include/生成目录boost_1_33,该目录下就是boost的头文件目录 –libdir=/usr/lib/boost 指定boost的库文件的存放位置, 生成的 .a .so 文件将放在该目录下 install 编译并安装boost

测试: « #include #include <boost/function.hpp> #include <boost/bind.hpp>

#define CALLBACK boost::function< void( const char* ) >

void mysql_query( const char* sqlcmd, const CALLBACK *callback ) { std::string result; result = “result:"; result += sqlcmd; ( *callback )( result.c_str() ); }

class Entity { public: void query() { CALLBACK func = boost::bind( &Entity::queryDatabaseCallback, this, _1 ); mysql_query( “select * from test”, &func ); }

void queryDatabaseCallback( const char* result )
{
    printf( "%s\n", result );
}    

};

void queryDatabaseCallback( const char* result ) { printf( “%s\n”, result ); }

void query() { CALLBACK func = &queryDatabaseCallback; mysql_query( “select * from test1”, &func ); }

int main() { query(); Entity e; e.query(); return 0; }

[[email protected] ~]([email protected] ~.md)$ g++ -o test test.cpp [[email protected] ~]([email protected] ~.md)$ ./test result:select * from test1 result:select * from test