2012-05-06 5 views
0

私の環境はarm-linux-androideabi(東芝AC100ではAndroid 2.2)です。gccとldの異なるバージョンを混在させることはできますか?

  1. 4.4.3(Android NDK on Android
  2. 4.6.0(R + GCC on Android

問題I:私は私の環境のためのGCCコンパイラの2セットを持っている(デバイス上の別の場所に設置) gd-4.6.0が実行されるたびにsegfaultsが実行されます(ただし、すべてのタスクが正常に実行され、終了時におそらくexitルーチンでsegfaultするだけです)。ld-4.4.3とar-4.4.3は実行に失敗します私の環境。一方、ld-4.6.0とar-4.6.0と同様、gcc-4.4.3もうまく動作します。

したがって、私が4.4.3を使ってconfigureを実行した場合、configureテストプログラムが正常にコンパイルされても、gcc segfaultsがゼロ以外の値を返すため、configureステップで失敗します139)。しかし、4.6.0でconfigureを実行すると、configureはうまく動作しますが、ビルド(make all)はリンクと静的ライブラリ作成時に悲惨に失敗します。

私の質問は以下のとおりです。

  1. は、それは私のオブジェクトファイル(gcc-4.4.3 -c input.c)をコンパイルするGCC-4.4.3を使用して、LD-4.6.0(ld-4.6.0 -o input input.o -lc)とリンクすることは可能ですか?つまり、私は問題のあるバイナリを削除し、作業バイナリの組み合わせを使ってプロジェクトをビルドします。
  2. 警告がある場合、それらは何ですか?
+0

試してみませんでしたが、どのライブラリ(ヘッダー)がコンパイラを使用し、どのリンカーがリンクするのだろうと思います。おそらくあなたはそれらに言わなければならないでしょう... – dbrank0

+0

私はこの質問を投稿するとすぐに、私はそれを試して見たことがあることを実感しました。しかし、あなたのコメントが示すように、私が調べる必要がある多くの警告があります。 – Samveen

答えて

-1

不適切な終了コードを隠すために、シェルスクリプトを使用してgccを呼び出すことができます。

+0

私はすでにそれをしています。しかし、コンパイルに失敗してもgccラッパーがtrueを返すという欠点があります。なぜなら、終了コードはセグメンテーションフォルト(139)のために返されたコードと一貫しているからです。 – Samveen

+0

実行ファイルが生成され、成功したかどうかをチェックし、そうでなければエラーコードを返しますか?もちろん、すべてがハックになり続けます... – gfour

+0

もちろん、ハックになります。したがって、質問... – Samveen

関連する問題