6

DelphiライブラリをAndroidに移植しようとしています。FreePascalはAndroid/ARMをサポートしています-Windows用のビルド済みコンパイラが利用可能です。ただし、AndroidNDKはMIPSとx86もサポートするようになりました。FPCのサポートの状況はどうなっていますか?今のところ、私のプロジェクトは多かれ少なかれCPUに依存していません。ネイティブビットは、サポートされている4つのアーキテクチャすべてに対して構築されています。それを手放したくない。

私はPascalでのAndroid開発の完全なサイクルの後ではありません-I/Oを行わないアルゴリズムライブラリだけです。私はそれをp2cでCに翻訳しようとしましたが、翻訳者はソースを窒息させます。

Linuxで関連するCPUのクロスコンパイラを構築してから、NDKライブラリにリンクする必要がありますか?

編集:AndroidブランチのソースからIntel/Linux用のクロスコンパイラを構築しました。ppcross386コンパイルするために呼び出す必要があることを除いて、動作します。ではありませんfpc。後者は、-Tlinuxオプションを無視し、Intel/Win32コンパイラを呼び出すようです。

EDIT2:makefileとソースにわずかな変更を加えるだけで、MIPSクロスコンパイラーがビルドされます。ただし、ビルドがクロスCPU RTLに移行すると、ほぼすぐにエラーが発生します。

4

1 に答える 1

3

最後に編集:Android/MIPSELコンパイルターゲットのサポートはFPCトランクで利用できます。最新のものをエクスポートし、クロスコンパイラーを構築し、コードを削除します。


MIPS ISAのサポートは、FPソースのあちこちで見られますが、まだ正式には行われていません。2.7リリースを待っています。

それまでの間、トランク内のJavaバイトコードへのコンパイルがサポートされています。これはFPwikiに記載されています。多分私はそれを一時的なものとして活用することができます...

編集:JVMを介した無料のPascalはAndroidで一般的に機能しますが、そのルールは通常のPascalとは多少異なります。それ以外の場合は、JVMにコンパイルするときにPascalのコンクを修正します。したがって、そもそもJVMを念頭に置いて作成されていないレガシーPascalコードの大部分を移植するのには適していません。

編集:FPCプロジェクトをMIPS / Androidで動作させましたが、プロジェクトでのPascal RTLの使用範囲が非常に限られているため、レシピは一般消費には適していません。これには、PascalからMIPSアセンブリ(FPCトランクで利用可能なMIPSEL / Linuxをターゲットとする)へのクロスコンパイルが含まれ、生成されたアセンブリソースをNDKビルドシステムにフィードして、PascalRTLの限定されたサブセットのC/アセンブリ再実装を提供します。

パスカルRTLの全身は大きくて怖いです。Pascal RTLをCで最初から再実装することを含む私の解決策は、まあ、一般的に適用できるのとは逆です。

于 2012-09-04T20:07:46.943 に答える