株式会社エスロジカル
株式会社エスロジカル
SSL証明書(3,300円/1年~ DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

UNIX の C言語:gccのstaticオプション

技術ドキュメント目次 -> UNIX の C言語 -> gccのstaticオプション

本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。

サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


◆ gccのstaticオプション(スタティックリンクでコンパイル)

Unix の C言語で開発したプログラムをいくつかの環境で稼動させる際、
環境によってライブラリのインストール状況が異なっていると、
それぞれの環境ごとでの動作確認が必要になったりで、
少々悩ましい場合があるかもしれません。
(あまり、そのようなことは実際には少ないかと思いますが。)

そのようなとき、
gcc に -static オプションを付加してコンパイルを行うと、
実行バイナリにライブラリが組み込まれ手コンパイルされるので、
上記のような場合の解決になるかもしれません。
(「スタティックリンクでコンパイルする」とか言ったりします。)

例えば、下記のようにして test という実行ファイルを作成してみて、
ldd コマンドの出力結果を比較してみてください。

test.c をダイナミックリンクでコンパイルする例
$ gcc -Wall -o test test.c
$ ldd test


test.c をスタティックリンクでコンパイルする例
$ gcc -Wall -static -o test test.c
$ ldd test


なお、スタティックにコンパイルする際は、
ライブラリのディレクトリ(/lib とか /usr/lib とか)に、
lib***.a という拡張子が .a のファイルが存在している必要があります。

ライブラリをインストールすると、
lib***.a と lib***.so といったように、.so のファイルと .a のファイル
の両方がインストールされることがよくありますが、
.a のファイルはスタティックリンクするために使用され、
.so のファイルはダイナミックリンクするために使用されます。

また、通常 *.so は、ファイル名にバージョンが含まれたファイルへの
シンボリックリンクになっていることが多いです。



■ UNIX の C言語 についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。