17.4. GCC および ar での静的ライブラリーの作成
オブジェクトファイルを特別なアーカイブファイルに変換して、静的にリンクするライブラリーを作成できます。
Red Hat は、セキュリティー上の理由から、静的リンクの使用は推奨していません。静的リンクは、特に Red Hat が提供するライブラリーに対して、必要な場合にのみ使用してください。「静的リンクおよび動的リンク」 を参照してください。
前提条件
- GCC と binutils がシステムにインストールされていること
- 静的リンクおよび動的リンクについて理解していること
- 関数を含むソースファイルをライブラリーとして共有していること
手順
GCC で仲介となるオブジェクトファイルを作成します。
gcc -c source_file.c ...
$ gcc -c source_file.c ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、さらにソースファイルを追加します。作成されるオブジェクトファイルはファイル名を共有しますが、拡張子は
.oを使用します。binutilsパッケージのarツールを使用して、オブジェクトファイルを静的ライブラリー (アーカイブ) に変換します。ar rcs libfoo.a source_file.o ...
$ ar rcs libfoo.a source_file.o ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow libfoo.aファイルが作成されます。nmコマンドを使用して、作成されたアーカイブを検証します。nm libfoo.a
$ nm libfoo.aCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 静的ライブラリーファイルを適切なディレクトリーにコピーします。
ライブラリーにリンクする場合、GCC は自動的に
.aのファイル名の拡張子 (ライブラリーが静的リンクのアーカイブであること) を認識します。gcc ... -lfoo ...
$ gcc ... -lfoo ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
関連資料
arツールの Linux man ページ:man ar
$ man arCopy to Clipboard Copied! Toggle word wrap Toggle overflow