2011-08-02 34 views
4

我想从boost中使用共享指针类(?)。我已经downloded提升,并将其提取到我的源文件夹(src)中的子文件夹(boost)。然后我加了一行:如何在Linux中使用提升

#include "boost/shared_ptr.hpp" 

当我尝试编译,我得到一个错误:

error: boost/smart_ptr/shared_ptr.hpp: No such file or directory

我有什么要补充的程序编译?

我是一个科学的Linux机器上工作,而不根privliges

回答

11

您需要,与g++,添加目录像g++ -I./boost ...编译选项或基本上添加的命令行选项-I随后直接无空间由您安装了boost库的相对路径或绝对路径。请记住,为了将来的参考,一些boost的元素,比如线程库也需要链接一些库,并且您还必须在编译时使用-L选项包含那些文件路径...这不是' t与boost::shared_ptr的情况下,但只是给你一个头。

+0

因为错误是源于由这是从shared_ptr.hpp称为文件这没有奏效。我用-I./取代了它,它的工作原理 – Yotam

+0

啊,好吧,但问题是编译器不知道在哪里访问正确的文件......例如,在shared_ptr.hpp文件中, '#include'预处理器指令很可能使用'<...>'语法而不是使用引号,这意味着它只能在可搜索的目录中找到该文件。如果当前目录不是使用尖括号语法的可搜索目录,则它不会找到该文件。如果您使用'<...>'语法,则必须使用'-I'选项来包含任何需要搜索的路径,或将这些路径添加到环境变量中。 – Jason

+0

我会记住这一点,谢谢 – Yotam

5

假设你已经安装了促进你的主目录的子目录中的一些,你需要做的其中之一,以指定编译器应该寻找升压头文件:

  • 添加-I标志编译器命令行(GCC docs
  • 设置CPLUS_INCLUDE_PATH环境变量(GCC docs
相关问题