2017-02-23 51 views
0

我想從源代碼編譯圖形工具Ubuntu 16.04,但有問題,它無法拿起正確的boost庫。我試圖對anaconda python進行編譯,所以必須提供額外的標誌到./configure。我嘗試運行以下命令:強制g ++在一個位置尋找Boost忽略其他設置

./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 

然而,這失敗,出現以下錯誤消息儘管libboost_python.so駐留在/home/pmj27/anaconda2/lib的事實正顯示在終端窗口

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 

望着config.log錯誤信息似乎是:

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. 

那麼,什麼似乎是發生的是,它首先在/usr/local/include/boost,這是錯誤的位置,然後失敗。我如何阻止它這樣做? (我相信這就是爲什麼圖形工具將無法編譯的原因。)

我也曾嘗試

./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. 
+0

當您在/ usr/local中讀取某些內容時,您獲得「權限被拒絕」這一事實意味着您已使用錯誤的權限安裝它。 –

+0

沒錯,我可以用'sudo'來解決這個問題。我試圖阻止使用這些boost庫,因爲我需要使用anaconda,以防止運行'graph-tool'時出現C++簽名不匹配。 –

+0

你沒有克服它,當你不需要的時候,你可能首先使用sudo(例如以root身份運行)導致問題。像這樣使用sudo是不好的形式,也是一個壞主意。您遇到的部分問題是由此導致的。 –

回答

0

首先:「我們無法檢測到Boost庫」並不意味着它不能找到Boost::Python共享庫。這意味着它無法找到提升本身,即:它的所有頭文件。

鑑於此我不得不懷疑這一點:

-I/home/pmj27/anaconda2/lib 

是否包含升壓頭文件在那裏?因爲您描述的是.so文件駐留在那裏。

一旦處理了boost包含問題,您可能需要指向.so庫的一組不同的標誌。這可能取決於你想如何部署它,但沿着這條線:

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

但這是未來。專注於獲得適當的提升頭文件!

+0

據我所知,頭文件似乎駐留在'/ home/pmj27/anaconda2/include/boost'中(它包含了一堆'.hpp'文件)。 –

+0

然後你需要'-I/home/pmj27/anaconda2/include'。 – CygnusX1