4

現在、一部のアームエルフ リトル エンディアン デバイス用のソフトウェアを開発しています。現在、プレーン C でこれを行っていますが、これは面倒です。幸いなことに、デバイスを作成している会社は C++ サポートを提供していますが、残念なことに、同じ会社が C++ ライブラリを台無しにしてしまったため、プロジェクトはコンパイルのリンカー段階で失敗しました。

最近、代替案を検討しており、最も興味深い代替案は mono です。arm 用の mono のコンパイルはほとんどが Scratchbox で行われていることがわかります。これは良い代替手段のようです。しかし、自分のデバイスに似た rootfs をセットアップする必要があることもわかります。これにより、scratchbox を使用して mono をコンパイルできなくなりますか? もしそうなら、モノをコンパイルする別の方法はありますか?

4

1 に答える 1

2

次のように、通常の構成サポートを使用してクロスコンパイルできます。

CC=arm-linux-yourabi-gcc CFLAGS="-march=armv7-a -mfloat-abi=softfp" -DARM_FPU_VFP=1 ./configure --host=arm-linux-yourabi --disable-mcs-build

もちろん、デバイスの ABI と浮動小数点のサポートに合わせて調整する必要があります。--disable-mcs-build が必要なのは、システム上でクロスコンパイルされた mono を実行できないためです。クラス ライブラリと C# コードを開発ボックスの別のツリーでビルドし、それらをターゲットにコピーするだけです。

また、IanNorton がコメントに書いていることとは反対に、mono ランタイムは C で書かれています (C++ では llvm へのバインディングが非常に小さいだけであり、これは必須ではなく、デフォルトのビルドではなく、セットアップにはまったく役に立ちません)。

于 2012-07-05T07:15:35.547 に答える