每次編譯boost總是得去網(wǎng)上搜索一番, 這次把過程記錄一下.

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

開始編譯,等待編譯完成,需很長時間。
關(guān)于bjam的后面的參數(shù)的設(shè)置:
-sTOOLS=gcc  指定編譯器為GCC
--includedir=/usr/include/  指定頭文件的安裝目錄,我安裝在/usr/include下。如果安裝成功,將在/usr/include/生成目錄boost_1_33,該目錄下就是boost的頭文件目錄
--libdir=/usr/lib/boost  指定boost的庫文件的存放位置, 生成的 .a .so 文件將放在該目錄下
install 編譯并安裝boost


測試:
#include <iostream>
#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;
}

[liquidx@localhost ~]$ g++ -o test test.cpp
[liquidx@localhost ~]$ ./test
result:select * from test1
result:select * from test