공유 라이브러리 (libapp.so
)를 빌드 할 때 여러 오브젝트 파일 (obj1.o
, obj2.o
)을 가지고 있습니다. 연결된 모든 객체는 빌드 할 때 보이지 않는 플래그를 가졌지 만 최종적으로 (libapp.so
, 아래 참조), 가시성 플래그를 hidden
으로 사용하면 외부 라이브러리의 모든 내부 함수를 숨길 수 있습니까?공유 라이브러리를 작성하는 동안 심볼 가시성 숨기기
gcc -shared -fPIC -fvisibility=hidden obj1.o obj2.o -o libapp.so
편집 : wRAR가 언급 한 바와 같이
, 난 버전이 최종 공유 라이브러리에있는 모든 기호를 숨길 cript 사용했습니다. libapp.version
{
local: *;
};
을 그리고 난 나의 공유 라이브러리를 구축 : 버전 스크립트는
파일로 삼았 작성되었습니다
이gcc -shared -fPIC obj1.o obj2.o -o libapp.so -Wl,--version-script=libapp.version
에도 지역 모든 기호를 붙여서, 난 여전히 볼 수 있습니다 모든 심볼이 존재한다는 것을 의미한다. 내가 여기서 뭐하고 있는거야?
언급 한대로 버전 스크립트를 시도했습니다. 내 질문에 편집 섹션 내 시도를 참조하십시오. 제가 실수로 스크립트를 사용했다면 알려주십시오. –