国際化対応言語環境の利用ガイド

動的にリンクされたアプリケーション

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 コマンドは 2 つのライブラリ libc.solibdl.so.l に動的にリンクされていることを示します。