2009-12-30 84 views
3

我在ubuntu 9.10的'/ media/data/bin'中编译并安装了我的boost库。 我已经设置了INCLUDE_PATH,LIBRARY_PATH ENV:在ubuntu上设置boost库的问题

$ echo $INCLUDE_PATH 
/media/data/bin/boost/include: 
$ echo $LIBRARY_PATH 
/media/data/bin/boost/lib: 

但是,当我编译ASIO例子中,我得到以下错误: $ G ++ blocking_tcp_echo_server.cpp

blocking_tcp_echo_server.cpp:13:26: error: boost/bind.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:14:31: error: boost/smart_ptr.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:15:26: error: boost/asio.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:16:28: error: boost/thread.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:18: error: ‘boost’ has not been declared 
blocking_tcp_echo_server.cpp:22: error: ‘boost’ has not been declared 
blocking_tcp_echo_server.cpp:22: error: expected initializer before ‘<’ token 
blocking_tcp_echo_server.cpp:24: error: variable or field ‘session’ declared void 
blocking_tcp_echo_server.cpp:24: error: ‘socket_ptr’ was not declared in this scope 

回答

10

有什么不对

sudo apt-get install libboost-dev 

之后,你不需要设置任何-I-L标志。如果你需要Boost 1.40,你仍然可以重建当前的Debian unstable软件包。

+0

我没有使用这个,因为它会提升我的主驱动器,我用尽了空间。所以我编译/安装我的外部硬盘驱动器(它比我的主驱动器有更多的空间)。 – n179911 2009-12-31 01:04:52

0

尝试C_INCLUDE_PATH或使用 - 我的编译器选项

BTW,使用LD_LIBRARY_PATH帮助查找图书馆

+0

我已经设置了C_INCLUDE_PATH和CPLUS_PATH,但我仍然得到链接错误: :错误:取消定义d引用'typeinfo for boost :: detail :: thread_data_base' 我已经设置了$ echo $ LD_LIBRARY_PATH /media/data/bin/boost/lib: – n179911 2009-12-31 01:01:10

+0

您必须指定库链接到“-lXXX”标志,确保你没有空间。当然,你将不得不将XXX替换为库的名称,减去“lib”前缀并且没有后缀。我不知道确切的库名称,您可能需要阅读文档。 LD变量指定库的搜索路径,但不指定要链接到的库。 – Anycorn 2009-12-31 01:12:24

+0

你知道什么,只是尝试添加-lboost到你的编译/链接命令 – Anycorn 2009-12-31 01:13:46

0

检查头实际上有:

/media/data/bin/boost/include/boost/bind.hpp

同时尝试使用-I /媒体/数据/斌/升压/包括而不是env变量(注意-I后没有空格)。

3

为了节省大家的时间,这里是我给这个问题在其他地方的答案: http://permalink.gmane.org/gmane.comp.lib.boost.user/54626

更新2016年2月11日:有必要直接指定选项:

g++ -I<prefix>/include -L <prefix>/lib 

或使用正确的变量:

export CPLUS_INCLUDE_PATH=<prefix>/include 
export LIBRARY_PATH=<prefix>/lib 
+0

请在这里添加所需的部分答案,而不是放入链接 – 2016-02-11 05:55:52

+0

这是2009年的问题,与Ubuntu 9.10相关。许多事情已经发生了变化,尤其是Boost构建过程打印,最后还介绍了如何使用已安装的Boost。我可以建议,如果你现在有问题,你会发布一个单独的详细问题?问题和解决方案可能与此问题中的问题完全不同。 – 2016-02-11 08:25:09