C++ 在ubuntu上设置boost库时遇到的问题

C++ 在ubuntu上设置boost库时遇到的问题,c++,boost,C++,Boost,我已经在ubuntu 9.10的“/media/data/bin”中编译并安装了我的boost库。 我已经设置了INCLUDE_PATH、LIBRARY_PATH env: $ echo $INCLUDE_PATH /media/data/bin/boost/include: $ echo $LIBRARY_PATH /media/data/bin/boost/lib: 但是当我编译asio示例时,我得到以下错误: $g++阻塞\u tcp\u echo\u server.cpp blocki

我已经在ubuntu 9.10的“/media/data/bin”中编译并安装了我的boost库。 我已经设置了INCLUDE_PATH、LIBRARY_PATH env:

$ echo $INCLUDE_PATH
/media/data/bin/boost/include:
$ echo $LIBRARY_PATH
/media/data/bin/boost/lib:
但是当我编译asio示例时,我得到以下错误: $g++阻塞\u tcp\u echo\u 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
blocking\u tcp\u echo\u server.cpp:13:26:错误:boost/bind.hpp:没有这样的文件或目录
阻塞\u tcp\u echo\u server.cpp:14:31:错误:boost/smart\u ptr.hpp:没有这样的文件或目录
阻塞\u tcp\u echo\u server.cpp:15:26:错误:boost/asio.hpp:没有这样的文件或目录
阻塞\u tcp\u echo\u server.cpp:16:28:错误:boost/thread.hpp:没有这样的文件或目录
阻塞\u tcp\u echo\u服务器。cpp:18:错误:“boost”尚未声明
阻塞\u tcp\u echo\u服务器。cpp:22:错误:“boost”尚未声明

阻塞\u tcp\u echo\u服务器。cpp:22:错误:在“尝试C\u INCLUDE\u路径或使用-I编译器选项之前需要初始值设定项

顺便说一句,使用LD_LIBRARY_PATH帮助查找库

有什么问题

sudo apt-get install libboost-dev

之后,您不需要设置任何
-I
-L
标志。如果您需要Boost1.40,您仍然可以重建当前的Debian不稳定包

检查标题是否确实存在:

/媒体/data/bin/boost/include/boost/bind.hpp


还可以尝试使用-I/media/data/bin/boost/include代替env变量(注意-I后面没有空格)。

为了节省大家的时间,我在别处给出了这个问题的答案:

更新2016-02-11:有必要直接指定选项:

g++ -I<prefix>/include -L <prefix>/lib
g++-I/include-L/lib
或者使用正确的变量:

export CPLUS_INCLUDE_PATH=<prefix>/include
export LIBRARY_PATH=<prefix>/lib
export CPLUS\u INCLUDE\u PATH=/INCLUDE
导出库路径=/lib

我已经设置了C_INCLUDE_路径和CPLUS_路径,但仍然得到链接错误::错误:未定义对“boost的类型信息::细节::线程数据\u库”的引用我已经设置了$echo$LD_库\u路径/media/data/bin/boost/lib:您必须使用“-lXXX”标志指定要链接到的库,请确保没有空格。当然,您必须将XXX替换为库名称减去“lib”前缀且不带后缀。我不知道确切的库名,您可能需要阅读文档。LD变量指定库的搜索路径,但不指定要链接到的库。你知道吗,只需尝试将-lboost添加到编译/链接命令中即可。我没有使用此命令,因为它会将boost放入我的主驱动器中,因为我的主驱动器空间不足。所以我在我的外置硬盘上编译/安装了boost(它比我的主硬盘空间大得多)。请在这里添加答案的必要部分,而不是把链接放在这里。这是2009年的问题,与Ubuntu 9.10有关。很多事情都发生了变化,特别是Boost构建过程在最后打印了有关使用已安装Boost的说明。我可以建议,如果你现在有问题,你可以发布一个单独的详细问题吗?问题和解决方案很可能与这个问题中的不同。