국제 언어 환경 설명서

동적으로 링크된 응용프로그램

동적 링크 만들기 또는 정적 링크 만들기를 사용하여 libc응용 프로그램을 시스템 라이브러리와 함께 링크로 만들 수 있습니다시스템 라이브러리에 국제화 기능이 필요한 모든 응용 프로그램은 동적으로 링크되어야 합니다. 만약 응용프로그램이 정적으로 링크가 되어 있을 경우, setlocale을 호출해서 로켈을 C나 POSIX 이외의 다른 로켈로 설정할 수 없습니다. 정적으로 링크된 응용프로그램은 C 및 POSIX 로켈에서만 작동할 수 있습니다.

기본적으로, 링커 프로그램은 응용프로그램을 동적으로 연결하려고 시도합니다. 링커 및 컴파일러에 대한 명령줄 옵션이 -Bstatic 또는 -dn 사양을 포함하면 응용프로그램이 정적으로 링크될 수 있습니다. 기존 응용프로그램이 /usr/bin/ldd 명령을 사용하여 동적으로 링크되었는지 확인할 수 있습니다.

예를 들어, 다음 명령에 대한 응답은 /sbin/sh 명령이 동적으로 링크된 프로그램이 아님을 나타냅니다.


% /usr/bin/ldd /sbin/sh
ldd: /sbin/sh: file is not a dynamic executable or shared object

이 응답은 /usr/bin/ls 명령이 두 라이브러리, libc.so.1libdl.so.1과 동적으로 링크되었음을 나타냅니다.


% /usr/bin/ldd /usr/bin/ls
libc.so.1 => 	/usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1