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.a
Copy 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 ar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow