C++ 力g++;忽略其他设置,在一个位置查找增压

C++ 力g++;忽略其他设置,在一个位置查找增压,c++,boost,g++,graph-tool,C++,Boost,G++,Graph Tool,我试图在Ubuntu 16.04上从源代码处编译graph tool,但有一个问题,它无法获取正确的boost库。我正试图针对anaconda python编译它,因此必须为/configure提供额外的标志。我尝试运行以下命令: ./configure CXX="g++-5" CXXFLAGS="-std=gnu++14 -Wno-unused-local-typedefs" CPPFLAGS="-I/home/pmj27/anaconda2/lib" PYTHON="/home/pmj27/

我试图在Ubuntu 16.04上从源代码处编译graph tool,但有一个问题,它无法获取正确的boost库。我正试图针对anaconda python编译它,因此必须为
/configure
提供额外的标志。我尝试运行以下命令:

./configure CXX="g++-5" CXXFLAGS="-std=gnu++14 -Wno-unused-local-typedefs" CPPFLAGS="-I/home/pmj27/anaconda2/lib" PYTHON="/home/pmj27/anaconda2/bin/python2.7" CAIROMM_LIBS="-L/home/pmj27/anaconda2/include/cairomm-1.0/cairomm" --enable-openmp
但是,此操作失败,终端窗口中显示以下错误消息

checking for boostlib >= 1.54.0... configure: We could not detect the boost libraries (version 1.54 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.
checking whether the Boost::Python library is available... no
configure: error: No usable boost::python found
因此,似乎正在发生的是,它首先查找
/usr/local/include/boost
,这是错误的位置,然后失败。我怎样才能阻止它那样做?(我想这就是graph tool无法编译的原因。)

我也试过了

./configure CXX="g++-5" CXXFLAGS="-std=gnu++14 -Wno-unused-local-typedefs -I/home/pmj27/anaconda2/lib" PYTHON="/home/pmj27/anaconda2/bin/python2.7" CAIROMM_LIBS="-L/home/pmj27/anaconda2/include/cairomm-1.0/cairomm" --enable-openmp
但是,尽管现在
/home/pmj27/anaconda2/lib
似乎出现在
/usr/local/include/boost
之前,但仍然会出现相同的错误消息:

configure:19104: checking for boostlib >= 1.54.0
configure:19187: g++-5 -c -fopenmp -O3 -fvisibility=default -fvisibility-inlines-hidden -Wno-deprecated -ftemplate-depth-250  -DNDEBUG -Wall -Wextra -ftemplate-backtrace-limit=0 -std=gnu++14 -Wno-unused-local-typedefs -I/home/pmj27/anaconda2/lib  -I/usr/include conftest.cpp >&5
conftest.cpp:35:33: fatal error: /usr/local/include/boost/version.hpp: Permission denied
compilation terminated.
首先,“我们无法检测到boost库”并不意味着它无法找到
boost::Python
的共享库。这意味着它无法找到boost本身,即:它的所有头文件

有鉴于此,我不得不质疑:

-I/home/pmj27/anaconda2/lib
其中是否包含boost头文件?因为您描述的是一个
.so
文件驻留在那里

一旦处理了boostinclude问题,您可能需要一组指向
.so
库的不同标志。这可能取决于您希望如何部署它,但大致如下:

-L/home/pmj27/anaconda2/lib -lboost_python -Wl,-rpath=/home/pmj27/anaconda2/lib

但这就是未来。首先关注获取正确的boost头文件

在/usr/local中读取某些内容时,您得到“权限被拒绝”这一事实意味着您使用了错误的权限安装了它。是的,我可以通过使用
sudo
来克服这一问题。我试图防止使用这些升压库,因为我需要使用AcANDA来防止C++签名不匹配,当运行<代码>图形工具< /C>时,您没有克服它,您可能首先使用SUDO(例如,作为根运行)来导致问题,而不必这样做。像这样使用sudo是一种糟糕的形式,也是一个糟糕的主意。您遇到的部分问题就是由此造成的。据我所知,头文件似乎位于
/home/pmj27/anaconda2/include/boost
中(它包含大量
.hpp
文件)。然后您需要
-I/home/pmj27/anaconda2/include
-L/home/pmj27/anaconda2/lib -lboost_python -Wl,-rpath=/home/pmj27/anaconda2/lib