您可以使用動態連結或靜態連結,將應用程式連結至系統程式庫,例如 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.1 和 libdl.so.1。
% /usr/bin/ldd /usr/bin/ls libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1 |