国际语言环境指南

动态链接应用程序

可以使用动态链接或静态链接,将应用程序与系统库(如 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