GCC를 사용하여 공유 라이브러리에 대한 미리 컴파일 된 헤더 파일을 만들려고합니다. 필요한 구성을 만들고 구축을 위해 노력 후, 나는 이러한 경고를 가지고 :GCC를 사용하는 공유 라이브러리 프로젝트의 미리 컴파일 된 헤더 파일
: 시간의 검색 후, 나는 PCH 공유 코드로 작동하지 않는 것이 좋습니다 것이 코드 조각을 발견cc1plus: warning: ./PrecompiledHeaders.h.gch/.c++: created and used with different settings of -fpic [enabled by default]
/* -fpic and -fpie also usually make a PCH invalid. */
if (data[0] != flag_pic)
return _("created and used with different settings of -fpic");
if (data[1] != flag_pie)
return _("created and used with different settings of -fpie");
data += 2;
그래서 라이브러리를 정적 라이브러리로 변경 했으므로 오류가 사라지고 컴파일 시간이 단축되었습니다! 그렇다면 실제로 공유 라이브러리가있는 PCH를 사용할 수 있습니까? 예인 경우이 문제가 있습니까?
감사합니다. 방금 추가 한 답변을 보시고 이에 대한 의견이 있으면 알려주십시오. – Rafid
-fPIC는 공유 객체에 대한 x86_64의 유일한 옵션입니다. 나는 복잡한 세부 사항에 너무 익숙하지 않다, 그러나 당신은 여기에서 정보 & 연결을 더 찾아 낼 것이다 : http://stackoverflow.com/questions/3961446/why-does-gcc-not-implicitly-supply-the-fpic- flag-when-compiling-static-librarie - 그 이유는 정확히 어떤 플래그를 추가해야 하는지를 알려주지 않고 '동일한 옵션 사용'이라고 말했기 때문입니다. 정확한 옵션은 아키텍처에 따라 다릅니다. – Mat