2013-10-11 3 views
0

상황 : 내가 정적 라이브러리 "lib1.a"가GCC 중첩 된 라이브러리와 링커 종속성

  • ;
  • "lib1.a"의 기능을 사용하는 두 번째 정적 라이브러리 "lib2.a";
  • "lib2.a"의 기능을 직접 사용하는 응용 프로그램입니다.

응용 프로그램을 연결할 때 응용 프로그램이 lib1 기능을 직접 호출하지 않아도 응용 프로그램 종속성도 "lib1.a"로 전달해야합니다. Lib2는 일종의 더 높은 수준의 래퍼 라이브러리입니다.

"응용 프로그램"이 lib1의 존재에 대해 알지 못하게 lib2 (중간 연결의 일종) 안에 lib1을 연결하는 방법이 있습니까?

나는 lib1.a를 scompact 할 수 있고 lib2.a 안에 객체 파일을 포함 할 수 있다는 것을 알고 있지만 다른 방법으로 자동으로 수행되고 USED 객체 파일이 lib2 안에 포함되어 있습니까? 최종 앱을 링크 할 때 Linke.

{앱 -uses-}> {LIB2 -uses-}> {[LIB1]}

건배 다비드

답변

0

다른 방법

상관이 있는가 (필자가 알고있는 유닉스 계열 시스템에서) 그렇지 않다.

GNU- ld 또는 gold를 사용할 때, 할 수있는 최선은, -l2 -l1를 포함하는 링커 스크립트로 libcombined.a를 작성하고 그것을 응용 프로그램을 가리 키도록한다.