2016-08-29 2 views
0

-fpic 플래그는 무엇을합니까? 라이브러리 (OpenSFM)를 설치하고 -fPIC 컴파일 플래그를 사용하여 Ceres Solver를 빌드하고 설치해야합니다.-fPIC 컴파일 플래그는 무엇을합니까?

문제는 이미 Ceres Solver가 -fPIC 플래그없이 설치되어 있고 다른 라이브러리가 이미 해당 패키지에 의존하고 있다는 것입니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

-fPIC은 공유 라이브러리에 대해 위치 독립적 코드를 만듭니다. 공유 라이브러리에 대한 대안은 정적 링크를 사용하는 것입니다. –

+0

이것은 CMake와는 아무런 관련이 없습니다. '-fPIC'는 CMake 플래그가 아니고 컴파일러 플래그입니다. –

답변

1

-fPIC에 대한 좋은 설명은 here입니다.

여기에있는 주요 질문은 Ceres Solver를 다시 빌드하지 않고도 OpenSfM을 설치할 수 있는지 여부입니다. 내가 아는 한, 당신은 할 수 없습니다.

가장 쉬운 방법은 Ceres Solver를 다시 설치하고 PIC 버전을 다시 설치하는 것입니다.

cmake .. -DCMAKE_C_FLAGS=fPIC \ 
    -DCMAKE_CXX_FLAGS=-fPIC \ 
    -DSOMEOTHERARGUMENTSTHATYOUMIGHTHAVE 

어떻게 작동했는지 알려주십시오. :)

+0

Ceres Solver를 제거한 다음 다시 설치하면 다른 라이브러리 (이 경우 OpenCV)에 영향을 미칠 수 있습니까? – Hilman

+0

-fPIC로 컴파일 된 라이브러리는 여전히 호환 가능해야합니다. – bot1131357

관련 문제