foo.o
으로 구성된 libfoo.a
을 배송하고 싶습니다. 이는 libVendorBar.a
과 libVendorZoo.a
에 달려 있습니다.종속 라이브러리의 심볼 만 제거하는 방법은 무엇입니까?
libfoo.a
을 링크하여 생성 할 때 libVendor*.a
의 심볼은 잠재적 인 클라이언트 응용 프로그램이 링크 할 수 있도록 공개되어 표시됩니다.
내 통제 범위를 벗어난 많은 이유로 제 3 자 클라이언트가 공급 업체 라이브러리와 직접 연결할 수 없도록하고 싶습니다.
gcc가 libfoo의 모든 libVendor 기호를 해결하고이를 버리면 libfoo의 기호 만 표시됩니다.
현재 LD_FLAGS
을 사용하고 있지 않으며 모든 것이 정적으로 연결되어 있습니다.
이 https://linux.die.net/man/1/strip을 보셨습니까? – zappy
'strip'은'-K'로도 원하는 것을하지 않습니다. 그것은 정적 라이브러리에서 아카이브 인덱스라는 것을 버리는 것 같습니다. [ranlib를 통해 색인을 다시 생성하면] (https://stackoverflow.com/questions/11346240/ranlib-and-static-library) 링크 된 바이너리는 모든 "분기 및 링크"명령어가있는 * super * strange입니다 무한 루프를 만드는 것입니다. 나는 근본적으로 잘못된 것을하고 있다는 것을 깨닫기 전에 반나절에'strip'과'ranlib'의 낙진을 디버깅하는 것을 보냈습니다. 분명히 내가 원하는 것을 할 수있는'gcc '안에 뭔가가 있어야만 하는가? –
https://stackoverflow.com/questions/33851045/gcc-a-static-library-with-undefined-symbols에 따르면 내가 찾고있는 것은 모든 기호를 완전히 해결하는 '-static' 플래그입니다. 나는 이것이 gcc가 대부분의 심볼을 버릴만큼 영리하다는 것을 의미하기를 바라고 있습니다. 나는 그것이 작동하면 내일이 게시물을 업데이 트 것 같아요. –