株式会社エスロジカル
株式会社エスロジカル
セキュリティプロダクツ提供
Web開発、システム開発、UNIXシステム構築
個人情報保護方針

技術ドキュメント

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

本技術ドキュメントは、ここしばらくメンテナンスをしておりません。
内容が古くなっている可能性などございますこと、ご理解を頂けますようお願いいたします。


サイフにやさしい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. ご感想をご自由にお書きください。



自社運営サイト: SSL証明書 / 改ざん検出 / 暗号化ソフト / RapidSSL / ジオトラスト / ベリサイン / SSL
サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


Copyright (C) 2006-2008 Slogical Corporation. All Rights Reserved.
ご意見などは、こちらのお問い合わせ用ページ からお願いいたします。

本サイト上の文書で記載または紹介している会社名、商品名は一般に各社の商標または登録商標です。
本サイト上の文書中では、TM マークおよび R マークを明記していない場合があります。