cmake build-system에서 boost.python과 내 응용 프로그램을 연결하려고합니다. 내 CMakeList.txt에서 가장 중요한 부분 : 물론링커 설정
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost COMPONENTS filesystem system date_time python REQUIRED)
add_definitions(-Wall -g -msse2 -fPIC)
그리고, 부스트의 파이썬의 라이브러리/헤더 /를 포함한 연결. 내가 cmake 임시 빌드 폴더로 이동 (.o 인 *)를 생성 오브젝트 파일을 찾을하기로 결정
/usr/bin/ld: libboost_python.a(from_python.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
libboost_python.a: could not read symbols: Bad value
:와
지금이 실패합니다. 나는 그것을 명령을 적용했습니다 결과
g++ -shared FILE.cpp.o -L/usr/lib -lboost_python -o MyModule.so
내가 파이썬에 대한 가능한 인 MyModule 모듈을 가지고! 그래서 cmake 링커 문자열을보고 차이점을 찾으십시오. 내 문제가 -Wl, 부스트 '라이브러리 목록 이전 -Bstatic에 있음을 발견 링커 플래그의 일부 지역을 제외 동안
/usr/bin/c++ -fPIC -g -shared -Wl,-soname,libScript.so -o ../../lib/libScript.so CMakeFiles/LogManagerWrapper.cpp.o -Wl,-Bstatic -lboost_filesystem -lboost_system -lboost_date_time -lboost_python -Wl,-Bdynamic -lpython2.7
: 나는 VERBOSE = 1로 만들 달렸다.
나는 그 논쟁이 어디서 왔는지 궁금합니다. Boost_USE_STATIC_LIBS OFF CMakeList.txt에 있습니다.
무엇이 잘못 되었나요?
나는 그것을 검사했다. 둘 다 있습니다 : a. – Ockonal