국제 언어 환경 설명서

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

Solaris 9 제품 사용자는 동적 연결 또는 정적 연결을 사용하여 libc와 같은 시스템 라이브러리와 응용프로그램을 연결하는 방법을 선택할 수 있습니다. 시스템 라이브러리에 국제화 기능을 필요로 하는 응용프로그램은 동적으로 링크되어야 합니다. 만약 응용프로그램이 정적으로 링크가 되어 있을 경우, setlocale을 호출해서 로켈을 C나 POSIX 이외의 다른 로켈로 설정할 수 없습니다. 정적으로 링크된 응용프로그램은 C 및 POSIX 로켈에서만 작동할 수 있습니다.

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

예를 들어, 다음을 입력하면

% /usr/bin/ldd /sbin/sh

명령은 /sbin/sh 명령이 다음 응답에서 볼 수 있듯이 동적으로 링크된 프로그램이 아님을 나타냅니다.

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

다음을 입력하면

% /usr/bin/ldd /usr/bin/ls

명령이 다음 메시지를 표시합니다.

libc.so.1 => 	/usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1

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