2010年01月08日

static-libstdc++ オプション

GCC 4.5 から、libstdc++ のみをスタティックリンクするための -static-libstdc++ オプションが追加されたそうです。

「PATCH RFA: Add -static-libstdc++ option to g++」
http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html

g++ は、過去のバージョンアップで何度か ABI が変わっています(2.95、3.1、3.3、4.0 で互換性が失われているそうです)し、これからも変わる可能性があります。

そのため、場合によっては適切な libstdc++ がダイナミックリンクできなくて、プログラムが動かなくなる可能性があります。
例えば上記の patch の説明では、gcc 自身を g++ でブートストラップする場合などが挙げられています。ビルドプロセスの途中で ABI が異なる g++ が複数動くことになると、ダイナミックリンクでは当然上手く動きません。

注意点として、libstdc++ をダイナミックリンクする C++ コードを dlopen() などを経由して使うことができなくなるようです。

「Re: -static-libgcc, static libstdc++.a and dynamicly loaded so files」
http://gcc.gnu.org/ml/gcc-help/2009-12/msg00186.html

トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード