2014-03-13 2 views
2

여기 보았 듯이 (Combine static libraries) 내가 libtool을 사용하여 둘 이상의 정적 라이브러리를 결합 할 수불필요한 코드를 가지지 않고 정적 라이브러리를 결합하는 더 좋은 방법이 있습니까?

libtool -static -o new.a old1.a old2.a 

지금까지 내가 아는 한,이 새로운 하나 기존 라이브러리에서 모든 단일 기능을 연결합니다. 하지만 내가 진정으로 원하는 것은 new.a 라이브러리의 함수이며, 나머지는 종속성 목적을 위해 존재합니다. 불필요한 코드를 가지지 않고 다른 라이브러리의 new.a에 필요한 부분 만 결합하는 방법이 있습니까?

+1

불필요한 코드를 삭제하는 것과 함께 이전 라이브러리의 심볼도 내 보내지 않는 것이 좋습니다. –

답변

3

새 라이브러리에 통합하려는 오브젝트 파일을 이전 라이브러리에서 추출 할 수 있습니다. 그러나 그것에 대해 걱정하는 것은별로 중요하지 않습니다. 링커는 공유 라이브러리에 정의 된 모든 심볼을 실행 파일에서 사용할 수있는 공유 라이브러리와 달리 필요한 객체 파일 만 링크합니다 (보통 모두 사용하지는 않음).

작업을 수행하는 구식 방법은 다음과 같습니다

mkdir new 
cd new 
ar x ../old1.a 
ar x ../old2.a 
ar rv ../new.a *.o 
cd .. 
rm -fr new 

x 작업 후에는 new.a에 사용하기 위해 원하는 것을 유지하는 잡초 큰칼 오브젝트 파일 수 있습니다.