ar コマンドは、複数のファイルを1つのアーカイブファイル(主に静的ライブラリ .a)にまとめたり、展開・管理する ツールです。
C/C++ の開発環境では、静的ライブラリを作成する際に頻繁に利用されます。
構文(Syntax)
ar [オプション] アーカイブファイル ファイル...
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
r | アーカイブにファイルを追加(既存の場合は置換) | ar r libfoo.a foo.o |
c | 新しいアーカイブを作成(警告を抑制) | ar rc libfoo.a foo.o |
s | インデックスを作成(ranlib 相当) | ar rcs libfoo.a foo.o bar.o |
t | アーカイブ内のファイル一覧を表示 | ar t libfoo.a |
x | アーカイブからファイルを展開 | ar x libfoo.a foo.o |
d | アーカイブからファイルを削除 | ar d libfoo.a foo.o |
q | 高速に追加(インデックス更新はしない) | ar q libfoo.a foo.o |
v | 詳細表示(他のオプションと併用) | ar tv libfoo.a |
実行例
静的ライブラリを作成
ar rcs libmylib.a foo.o bar.o
(foo.o と bar.o をまとめて libmylib.a を作成)
アーカイブ内容を確認
ar t libmylib.a
出力例:
foo.o
bar.o
詳細付きで確認
ar tv libmylib.a
出力例:
rw-r--r-- 0/0 1234 Jan 01 12:00 2025 foo.o
rw-r--r-- 0/0 2345 Jan 01 12:00 2025 bar.o
ファイルを展開
ar x libmylib.a foo.o
ファイルを削除
ar d libmylib.a foo.o
高速追加(インデックスなし)
ar q libmylib.a baz.o
エラー例(存在しないファイル追加)
ar rcs libtest.a notfound.o
出力例:
ar: notfound.o: No such file or directory
関連コマンド
ranlib: 静的ライブラリのインデックスを作成(ar sと同等)nm: ライブラリやオブジェクトファイル内のシンボルを表示ld: リンカ(静的/動的ライブラリを結合して実行ファイルを作成)
備考
arは 静的ライブラリ (.a) を作成するために使われ、共有ライブラリ (.so) はgcc -sharedなどで生成します。ar rcsが 静的ライブラリ作成の定番コマンド です。- 生成されたライブラリは
gcc main.o -L. -lmylib -o mainのようにリンクして使用します。
参考
- manページ: man7.org ar(1)
- GNU binutils: https://www.gnu.org/software/binutils/

コメント