programing

여러 .so 공유 라이브러리 병합

goodsources 2022. 8. 9. 22:58
반응형

여러 .so 공유 라이브러리 병합

예를 들어 a.so 및 b.so이 있다고 합시다.c.so을 a와 b가 내보내는 모든 기능을 가진 단일 공유 라이브러리로 만들 수 있습니까?물론 모든 내부 의존성(a.so에서 호출하는 모든 기능 및 그 반대)을 해결할 수 있습니다.

나는 노력했다.

gcc - shared - Wl , soname , c.so -o c.so a.so

효과가 없어요.

a.o와 b.o를 a.a와 b.a(a.o와 b.o를 수정할 수 없음)에 보관하고,

gcc - shared - Wl, soname, c.so -o c.so a.a b.a.

고마워요.

여러 공유 라이브러리를 하나로 병합하는 것은 AIX를 제외한 모든 UNIX에서 사실상 불가능합니다. 링커는 .so를 "최종" 제품으로 간주합니다.

그러나 아카이브를 .so에 병합하는 것은 문제가 되지 않습니다.

gcc -shared -o c.so -Wl,--whole-archive a.a b.a -Wl,--no-whole-archive

실제로는 불가능하다.

링커 관점에서 SO 라이브러리는 링크에 필요한 재배치 정보를 포함하지 않는 최종 제품입니다.

양쪽 라이브러리의 소스 파일 또는 오브젝트 파일 중 하나에 액세스할 수 있는 경우 이들 라이브러리에서 결합된 SO를 컴파일/링크하는 것이 간단합니다.

언급URL : https://stackoverflow.com/questions/915128/merge-multiple-so-shared-libraries

반응형