17.3. GCC での動的ライブラリーの作成
動的にリンクされたライブラリー (共有オブジェクト) を使用すると、コードを再利用してリソースを確保でき、またライブラリーコードの更新が簡単になることからセキュリティーの強化を図ることができます。このセクションでは、ソースから動的ライブラリーを構築し、インストールする手順を説明します。
前提条件
- soname メカニズムを理解している
- GCC がシステムにインストールされている
- ライブラリーのソースコード
手順
- ライブラリーソースのディレクトリーに移動します。
位置独立コードオプション
-fPIC
でオブジェクトファイルに各ソースファイルをコンパイルします。$ gcc ... -c -fPIC some_file.c ...
オブジェクトファイルは元のソースコードファイルと同じファイル名を持ちますが、拡張子は
.o
となります。オブジェクトファイルから共有ライブラリーをリンクします。
$ gcc -shared -o libfoo.so.x.y -Wl,-soname,libfoo.so.x some_file.o ...
使用するメジャーバージョン番号は X で、マイナーバージョン番号は Y です。
libfoo.so.x.y
ファイルを、システムの動的リンカーが検索できる適切な場所にコピーします。Red Hat Enterprise Linux では、ライブラリーのディレクトリーは/usr/lib64
となります。# cp libfoo.so.x.y /usr/lib64
このディレクトリー内のファイルを操作するには、root パーミッションが必要な点に注意してください。
soname メカニズムのシンボリックリンク構造を作成します。
# ln -s libfoo.so.x.y libfoo.so.x # ln -s libfoo.so.x libfoo.so
関連資料
- Linux ドキュメントプロジェクト: Program Library HOWTO の 3.Shared Libraries