공유 라이브러리를 작성할 때 일반적으로 링커 스크립트 또는 -fvisibility
옵션을 사용하여 동적 연결 시간을 줄이기 위해 모든 내부 기호를 숨기는 것이 좋습니다. 의 정적 라이브러리를 공유 라이브러리에 링크 할 때 심볼을 숨겨야합니까?
모든
- 내부 정적 라이브러리 : 내 경우
, 공유 라이브러리는 두 개의 다른 라이브러리의 종류와 연결되어 그것들은
-Wl,--whole-archive
옵션을 사용하여 공유 라이브러리에 링크되므로 결과 공유 라이브러리는 자급 자족하며 stdlib에만 링크됩니다.내부 정적 라이브러리의 모든 기호는 공개 API의 일부가 아니기 때문에 숨겨져 있습니다.
제 3 자 정적 라이브러리의 기호를 숨기는 이유는 무엇입니까? 모범 사례와 알려진 함정이 있습니까? 한편으로는 내 라이브러리의 공개 API에 포함되지 않습니다. 다른 한편으로는 제 3 자 라이브러리에 대한 공개 API의 일부입니다.
사용자가 동일한 타사 라이브러리의 다른 버전에 연결할 때 문제가 발생할 것으로 생각됩니다. 이론적으로 기호를 숨기면 문제를 해결할 수 있지만 실제로는 예기치 않은 문제가 발생할 수 있습니다.