国际语言环境指南

动态链接应用程序

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