2017-09-15 13 views
0

-only 라이브러리 나는 그것이 그것에 달려 있다는 것을 알았 기 때문에 단지 system thread regex을 추가했다. 그래서 CMake 결과가 정확 찾습니다CMake 부스트 연결 문제

-- Boost version: 1.65.0 -- Found the following Boost libraries: -- python -- system -- thread -- regex -- chrono -- date_time -- atomic -- Configuring done -- Generating done

(그러나 왜 등 크로노 추가 종속성을 검색한다??) 글쎄, 난 make my_lib를 실행하고있을 때, 일부 링커 오류가 같이있다 : In function PyInit_my_lib: undefined reference to boost::python::detail::init_module(PyModuleDef&, void (*)())In function boost::asio::detail::posix_thread::~posix_thread(): /usr/local/include/boost/asio/detail/impl/posix_thread.ipp:35: undefined reference to pthread_detach 이므로 부스트가 제대로 연결되지 않았습니다. 많은 문서와 유사한 질문을 읽었지만 잘못된 것을 이해하지 못했습니다.

P. -Wl,--no-undefined 링커 옵션을 비활성화했을 때 연결은 성공적 이었지만 아직 정의되지 않은 참조가 계속 존재하며 파이썬을 사용하여 모듈을 가져올 수 없습니다.

+0

먼저 find_package 호출 전에'set (Boost_USE_STATIC_LIBS OFF) set (Boost_USE_MULTITHREADED ON) '을 설정해야합니다. 그리고 두 번째로 target_link_libraries 호출에서 라이브러리의 순서를 전환해야합니다 : Phython 라이브러리가 먼저 가고 Boost 라이브러리가됩니다. – vre

+0

@vre done, but did not help :( – Uroboros

+0

변경 사항을 적용한 후에'CMakeCache.txt' 파일을 지우셨습니까? 가끔은 필요합니다. 그렇지 않으면 변경 사항이 적용되지 않습니다 .. – vre

답변

0

마지막으로 솔루션은 혼자서 발견되었습니다. 문제는 실제로 Boost::Python 제대로 작성되지 않았습니다. 나는 그것이 버그 또는 내 자신의 잘못이었다 완전히 알고 있지만, 내 경우에는 단지 python3.5를 사용하는 Boost Build's user-config.jam을 편집하는 것은 충분하지 않습니다 실행 빌드 스크립트가 libboost_python3.so에 나 섰으나 내부적으로 python2.7 인터프리터를 위해에 의해 사용되었다 나에게 알려지지 않은 이유.

그래서, 내가 한 일은 즉, ./bootstrap.sh --with-python=/usr/bin/python3.5m로 부스트 초기 부트 스트랩을 출시 필요한 인터프리터의 절대 경로를 지적한다. Boost::Python을 다시 작성한 후 모든 기호가 성공적으로 해결되었습니다.