리눅스에서 빌드할때 일부 라이브러리만 static으로 빌드할 수 있나요?

fourier의 이미지

안녕하세요.

리눅스에서 빌드할때 일부 라이브러리만 static으로 빌드할 수 있는지 궁금합니다.

gcc 옵션에 -static을 주면 .a가 있으면 스태틱으로 빌드하고, 없으면 shared로 빌드하는것 까지는 압니다.

하지만..제가 원하는건..

모두 스태틱으로 빌드하는 것이 아니라.. 일부 라이브러리만 스태틱으로 빌드하고 싶은겁니다.

예를들어.. libc6.so 와 libc6.a이 /lib에 둘다 있는데, 이 라이브러리만 libc.so로 빌드하고 싶습니다.

그 외 다른 라이브러리들은 shared로 빌드하고 싶습니다.

이것이 가능한건지 궁금합니다.

김정균의 이미지

shell> gcc -o a.out -Wl,-Bstatic -lungif -Wl,-Bdynamic -lpng

libungif는 static으로, libpng는 dynamic으로 link 됩니다.