2010年06月08日

gccのトランクにandroid用の変更がマージされた

先日gccの4.5.0がリリースされたので、開発用のトランクでは今は次の4.6に向けてコードのマージが行われています。

この変更点に、Android用の変更を見つけたので紹介します。



説明によれば -mandroidというオプションが追加されたようです。

gccの本家のgitのリポジトリからトランクのソースを持ってきて見てみました。

$ grep -r android *

としてみると、gcc/config/arm/eabi.h がマッチしました。

コマンドラインオプション -mandroidをつけるとAndroid特有の環境に合うように内部的にオプションが追加されるようです。例えば

  • cc1 --> -fno-exceptions 追加
  • cc1plus --> -fno-exceptions -fno-rtti 追加
  • ld --> -Bsymbolic -dynamic-linker /system/bin/linker 追加

また、リンク時のスタートアップファイルや標準CライブラリもAndroid用のものに置き換わります。

C++の例外や実行時型情報を使用しないことやダイナミックリンクの方法などがAndroid特有のものです。

現状はこれらのオプションはそれぞれAndroidのビルド環境やNDKのMakefileについているので、この-mandroidオプションは無くても困るものではありません。

自分のソースコードをAndoridに組み込む時にこの-mandroidオプションを使うとMakefileの記述で少し楽ができます。

LinuxカーネルのAndroid向けの変更はマージされずにはじかれてしまいましたが、gccのほうはちゃんとマージされたのですね。もっともカーネルの変更と、このgccの変更では量も重要度も全く違いますが。

2010.6.9追記

このgcc/config/arm/eabi.hは実はけっこう前から入っていたようです。少なくともgcc-4.4.4には入っています。

なんでgcc-4.6のchangedにこのことが書いてあるのか謎です。



トラックバックURL

コメントする

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

QRコード
QRコード