首先需要安装boost,步骤如下:
下载到 boost_1_49_0.tar.bz2 (当然,其他压缩格式也可以)后,可以把它放在用户目录下,即:~/
解压缩:tar -jxvf boost_1_49_0.tar.bz2
这样,出现文件夹:~/boost_1_49_0
然后进入:$ cd boost_1_49_0
你会发现有一�¸.shå½ä»¤ï¼bootstrap.sh
è¿è¡å®ï¼$ ./bootstrap.sh ï¼boostèªå·±çget startææ¡£ä¸è¯´è®¾ç½®åæ° --prefix=dir å ¶ä¸dirä¸ºä½ æ³æå®çå®è£ æ件夹ï¼æ建议就ä¸ç¨å è¿ä¸ªåæ°ï¼å®ä¼é»è®¤å®è£ å°/usr/localï¼
ç»æååºç°ä¸ä¸ªå¯æ§è¡æä»¶ï¼ ~/boost_1_49_0/b2
è¿è¡è¿ä¸ªæä»¶ï¼ $ sudo ./b2 install ï¼Ubuntuç¨æ·åä¸å«å¿äºå sudoï¼ä¸ç¶å®è£ åå°æ æ³å®å ¨ä½¿ç¨ï¼
ç¼è¯å®è£ æ¶é´æ¯è¾é¿ï¼æ ¹æ®ä¸åæºå¨çæ åµ20ï½40åéãç»æåå³å®è£ å®æ¯ã
boost::threadç使ç¨
#include <boost/thread.hpp>#include <iostream>
void task1() {
// do stuff
std::cout << "This is task1!" << std::endl
}
void task2() {
// do stuff
std::cout << "This is task2!" << std::endl
}
int main (int argc, char ** argv) {
using namespace boost
thread thread_1 = thread(task1)
thread thread_2 = thread(task2)
// do other stuff
thread_2.join()
thread_1.join()
return 0
}
ç¼è¯æ¶çå½ä»¤ä¸ºï¼
$ g++ -I./inlcude -L./lib example.cpp -lboost_thread -o example
ç¼è¯ä¹åä¼åºç°ä¸ä¸ª example çå¯æ§è¡æ件ï¼å¯ä»¥è¿è¡ï¼./example ï¼ ç»ææ¾ç¤ºï¼
This is task2!
This is task1!
å¯è½ä½ å¨è¿è¡æ¶ä¼åºç°è¿æ ·çé误ï¼error while loading shared libraries: libboost_thread.so.1.49.0: cannot open shared object file: No such file or directory
è¿æ¯å 为è¦ç¨å°çåºä¸å¨é»è®¤çç¯å¢åééï¼å¯ä»¥ä½¿ç¨ä¸é¢çå½ä»¤æ·»å ï¼
$ sudo ldconfig /usr/local/lib
æ·»å åï¼åæ§è¡./exampleï¼è¿æ ·ä½ å°±å®æäºä½ ç第ä¸ä¸ªboost::threadç¨åºã
我系统是ubuntukylin14.04然后今天去BOOST下了最新版的boost1.57版
下载下来的压缩文件我解压到/opt目录下即/opt/boost_1_57_0
然后
cd /opt/boost_1_57_0
./boststrap
./b2
这里b2命令执行完成后显示:
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
/opt/boost_1_57_0
The following directory should be added to linker library paths:
/opt/boost_1_57_0/stage/lib
然后我找了一段例子
C/C++ code?
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<boost/bind.hpp>
using namespace std
using namespace boost
int fun(int x,int y){return x+y}
int main(){
int m=1int n=2
cout<<boost::bind(fun,_1,_2)(m,n)<<endl
return 0
}
用g++编译的时候提示
bst.cxx:2:31: fatal error: boost/bind.hpp: 没有那个文件或目录
#include<boost/bind.hpp>
^
compilation terminated.
打开synaptic, 找到libboost-all-dev, 安装即可。安装后可以查看boost相关库,在/usr/lib/目录下
如:/usr/lib/libboost_date_time.a /usr/lib/libboost_math_tr1f-mt.a /usr/lib/libboost_serialization-mt.so
/usr/lib/libboost_date_time-mt.a/usr/lib/libboost_math_tr1f-mt.so /usr/lib/libboost_serialization.so
/usr/lib/libboost_date_time-mt.so /usr/lib/libboost_math_tr1f.so/usr/lib/libboost_serialization.so.1.42.0
/usr/lib/libboost_date_time.so /usr/lib/libboost_math_tr1f.so.1.42.0 /usr/lib/libboost_signals.a
/usr/lib/libboost_date_time.so.1.42.0 /usr/lib/libboost_math_tr1l.a /usr/lib/libboost_signals-mt.a
/usr/lib/libboost_filesystem.a /usr/lib/libboost_math_tr1l-mt.a /usr/lib/libboost_signals-mt.so
/usr/lib/libboost_filesystem-mt.a /usr/lib/libboost_math_tr1l-mt.so /usr/lib/libboost_signals.so
/usr/lib/libboost_filesystem-mt.so /usr/lib/libboost_math_tr1l.so/usr/lib/libboost_signals.so.1.42.0
/usr/lib/libboost_filesystem.so /usr/lib/libboost_math_tr1l.so.1.42.0 /usr/lib/libboost_system.a
/usr/lib/libboost_filesystem.so.1.42.0 /usr/lib/libboost_math_tr1-mt.a /usr/lib/libboost_system-mt.a
/usr/lib/libboost_graph.a /usr/lib/libboost_math_tr1-mt.so /usr/lib/libboost_system-mt.so
/usr/lib/libboost_graph-mt.a/usr/lib/libboost_math_tr1.so /usr/lib/libboost_system.so
/usr/lib/libboost_graph-mt.so /usr/lib/libboost_math_tr1.so.1.42.0 /usr/lib/libboost_system.so.1.42.0
/usr/lib/libboost_graph.so /usr/lib/libboost_prg_exec_monitor.a /usr/lib/libboost_test_exec_monitor.a
/usr/lib/libboost_graph.so.1.42.0 /usr/lib/libboost_prg_exec_monitor-mt.a /usr/lib/libboost_test_exec_monitor-mt.a
复制代码头文件在/usr/include/boost下gnuser@ubuntu:~$ ls /usr/include/boost/
accumulators date_time.hpp io_fwd.hpp pointer_cast.hpp spirit
algorithmdetailiostreams pointer_to_other.hpp spirit.hpp
aligned_storage.hpp dynamic_bitsetis_placeholder.hpp pool statechart
any.hpp dynamic_bitset_fwd.hppiterator preprocessor static_assert.hpp
archive dynamic_bitset.hppiterator_adaptors.hpp preprocessor.hpp strong_typedef.hpp
array.hppenable_shared_from_this.hpp iterator.hpp program_optionsswap.hpp
asio exception lambda program_options.hppsystem
复制代码boost库命名:
比如libboost_regex-vc71-mt-d-1_34.lib,
lib: 库前缀,除了windows平台,都是这个前缀
boost_regex: boost的regex库
-mt 多线程支持
-d debug版本
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)