0

我想我已经正确安装了 boost,所以我尝试使用在这里找到的测试“first.cpp” :

#include<iostream>
#include<boost/any.hpp>

int main()
{
    boost::any a(5);
    a = 7.67;
    std::cout<<boost::any_cast<double>(a)<<std::endl;
}

我得到以下信息:

Jason@ITHAKA-DB44CFE1 /home/jason
$ g++ -o first first.cpp
first.cpp:2:24: boost/any.hpp: No such file or directory
first.cpp: In function `int main()':
first.cpp:6: error: `boost' has not been declared
first.cpp:6: error: `any' undeclared (first use this function)
first.cpp:6: error: (Each undeclared identifier is reported only once for each
unction it appears in.)
first.cpp:6: error: expected `;' before "a"
first.cpp:7: error: `a' undeclared (first use this function)
first.cpp:8: error: `boost' has not been declared
first.cpp:8: error: `any_cast' undeclared (first use this function)
first.cpp:8: error: expected primary-expression before "double"
first.cpp:8: error: expected `;' before "double"
first.cpp:9:2: warning: no newline at end of file

Jason@ITHAKA-DB44CFE1 /home/jason
$

我的 boost 库在我的 ./home/Jason/ 中

显然有什么事情发生了。此外,所有的 boost 库本身都使用这个“boost/...”,所以出于某种原因:

1 - 我在 Boost 上做错了 2 - C++/gcc 没有“看到”我的提升

任何输入?

4

2 回答 2

2

您需要传递-I/home/Jason/includegcc,并且可能-L/home/Jason/lib也传递给 a ,因为该库未安装在标准路径中。尝试:

 g++ -I/home/Jason/include -L/home/Jason/lib -o first first.cpp

此外,一旦编译,它将无法正常运行,因为库不再位于标准路径中。要运行它,您需要添加/home/Jason/lib到环境变量LD_LIBRARY_PATH中。

编辑:正如 Tony D 指出的那样,您可以改为设置CPLUS_INCLUDE_PATH/home/Jason/include,这相当于我给您的编译器选项。

编辑

如果您只想测试您的安装,您可以运行~/bin/Boost.Test脚本(假设您在--with-libraries=test安装时已启用)。否则,小时主页中应该有一个bin目录(如果您使用它作为前缀),如果其中有任何名称Boost,请尝试运行它(但请记住设置LD_LIBRARY_PATH之前)。

于 2013-04-23T02:07:40.210 回答
-1
  • 头文件链接到“/usr/include”

$ cd /usr/include
$ sudo ln -s /usr/local/boost_xxxx/boost boost

  • 编译boost库,并将so文件复制到'/usr/lib'

$ sudo cp /usr/local/lib/libboost_regex-gcc41-mt-xxxx.so.xxxx /usr/lib/

于 2013-04-23T02:16:32.993 回答