PostgreSQL
PrevChapter 38. 動的ロード関数のリンクNext

SunOS 4.x, Solaris 2.x and HP-UX

SunOS 4.x、 Solaris 2.x、 HP-UX では、 単純オブジェクトファイルは、ソースファイルを特別なコンパイラフラ グ付でコンパイルして作らなくてはなりません。また、共有ライブラリ を作らなくてはなりません。 HP-UXで必要な手順は次のとおりです。 HP-UXのCコンパイラに +z フラグを与えることで、 いわゆる位置独立なコード(PIC: Position Independent Code)を作り、 +u フラグを与えることで、PA-RISCアーキテクチャ では通常強制的に行われるアライメント制限を取り除きます。 オブジェクトファイルは、HP-UXのリンカの -b フラグを使って、 共有ライブラリに変換しなくてはなりません。 複雑に見えるかも知れませんが、実際は単純です。なぜなら、こ れをするためのコマンドは単に次のようなものだからです。

# simple HP-UX example
              % cc +z +u -c foo.c
              % ld -b -o foo.sl foo.o

最後の節で言及されている .so ファイルもそうであるように、関数生成 コマンドには、ロードすべき正しいファイルがどのファイルであるのかを 指定しなければなりません (すなわち、共有 ライブラリ、もしくは .sl ファイルの場所を指定しなければならないの です)。 SunOS 4.x でのコマンドは次のとおりです。

# simple SunOS 4.x example
              % cc -PIC -c foo.c
              % ld -dc -dp -Bdynamic -o foo.so foo.o
そして、Solaris 2.x での、対応するそれぞれの行は次のようになります。
# simple Solaris 2.x example
              % cc -K PIC -c foo.c
                   or
              % gcc -fPIC -c foo.c
              % ld -G -Bdynamic -o foo.so foo.o

共有ライブラリをリンクする時には、ldのコマンド行で、いくつかの追加 の共有ライブラリ(通常は C や数学のライブラリなどのシステムライブ ラリ)を指定することになるでしょう。


PrevHomeNext
DEC OSF/1UpTriggers