Я пытаюсь скомпилировать Graph-инструмент из источника на Ubuntu 16.04
но есть проблема в том, что он не может подобрать правильные библиотеки повышения. Я пытаюсь скомпилировать его с помощью Python Anaconda, поэтому необходимо предоставить дополнительные флаги для ./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
несмотря на то, что libboost_python.so
проживает в /home/pmj27/anaconda2/lib
,
Смотря на 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
, который является неправильным местом, а затем не удается. Как я могу остановить это от этого? (Я предполагаю, что это причина, по которой инструмент Graph не скомпилируется.)
Я также пытался
./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::Python
, Это означает, что он не может найти сам импульс, то есть все его заголовочные файлы.
В связи с этим я должен подвергнуть сомнению это:
-I/home/pmj27/anaconda2/lib
Содержит ли он повышение заголовочные файлы там? Потому что вы описываете, что .so
файл находится там вместо этого.
После того, как вы решите проблему с включенным расширением, вам может понадобиться другой набор флагов, указывающих на .so
библиотека. Это может зависеть от того, как вы хотите развернуть его, но что-то вроде этого:
-L/home/pmj27/anaconda2/lib -lboost_python -Wl,-rpath=/home/pmj27/anaconda2/lib
но это будущее. Сосредоточьтесь на получении правильных заголовочных файлов Boost в первую очередь!
Других решений пока нет …