반응형
-fPIC 컴파일러 옵션을 추가하는 CMAKE의 관용적 방법은 무엇입니까?
나는 이것을하기위한 적어도 3 가지 방법을 발견했고 나는 어떤 것이 관용적 인 방법인지 궁금하다. 이것은 거의 모든 정적 라이브러리에 대해 거의 보편적으로 수행되어야합니다. CMake의 Makefile 생성기가이를 정적 라이브러리에 자동으로 추가하지 않는다는 사실에 놀랐습니다. (내가 놓친 게 아니라면?)
target_compile_options(myLib PRIVATE -fPIC)
add_compile_options(-fPIC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")
다른 변형이있을 수도 있다고 생각합니다. (찾으면 내 질문을 수정하십시오)
이 질문에 대한 답을 아는 경우 CMakeLists.txt 파일을 수정하지 않고 타사 CMake 프로젝트가이 플래그로 컴파일되도록하는 방법이 있는지도 알고 있습니까? 해당 플래그가 누락 된 정적 라이브러리를 실행했습니다. 정적 라이브러리를 동적 라이브러리로 컴파일 할 때 문제가 발생합니다.
당신은 얻을 :
relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
모든 타겟에서 위치 독립적 코드 속성을 설정할 수 있습니다.
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
또는 특정 라이브러리에서 :
add_library(lib1 SHARED lib1.cpp)
set_property(TARGET lib1 PROPERTY POSITION_INDEPENDENT_CODE ON)
반응형
'your programing' 카테고리의 다른 글
Linux I / O 스케줄러 선택 (0) | 2020.10.05 |
---|---|
목록에서 목록을 압축하는 방법 (0) | 2020.10.05 |
자바 동기화 블록 대 Collections.synchronizedMap (0) | 2020.10.05 |
Hibernate에서 @Temporal 어노테이션의 사용은 무엇입니까? (0) | 2020.10.05 |
Python의 모듈 식 곱셈 역함수 (0) | 2020.10.04 |