國際語言環境指南

動態連結應用程式

您可以使用動態連結或靜態連結,將應用程式連結至系統程式庫,例如 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