Заставить g ++ искать Boost в одном месте, игнорируя другие настройки

Я пытаюсь скомпилировать 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.

0

Решение

Прежде всего: «Мы не смогли обнаружить библиотеки повышения» не означает, что он не может найти общую библиотеку Boost::Python, Это означает, что он не может найти сам импульс, то есть все его заголовочные файлы.

В связи с этим я должен подвергнуть сомнению это:

-I/home/pmj27/anaconda2/lib

Содержит ли он повышение заголовочные файлы там? Потому что вы описываете, что .so файл находится там вместо этого.

После того, как вы решите проблему с включенным расширением, вам может понадобиться другой набор флагов, указывающих на .so библиотека. Это может зависеть от того, как вы хотите развернуть его, но что-то вроде этого:

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

но это будущее. Сосредоточьтесь на получении правильных заголовочных файлов Boost в первую очередь!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]