17

JHCはHaskellコンパイラであり、ポータブルでCコードを生成し、コンパイラバックエンドを呼び出して実行可能ファイルを作成します。

JHCのランタイムシステムのヘッダーファイルとライブラリをダンプする必要があるので、androidndkはそれを使用して生成されたCコードをコンパイルできます。

または、AndroidAPIをJHCにリンクする方法を理解する必要があります。

基本的に、JHCをandroid ndkバックエンドに接続するにはどうすればよいですか?

編集:JHCが使用できるndkのビルドツールの1つである「build / tools/make-standalone-toolchain.sh」を使用してスタンドアロンコンパイラを作成しました。次に、JHCがプログラムを共有オブジェクトライブラリにコンパイルする方法と、JHCが「メイン」関数を要求しないようにする方法を理解する必要があります。

Edit2:次のtargets.iniとコンパイルスクリプトがあります。不思議なことに、共有ライブラリのロードに失敗します。

[android]
cc=arm-linux-androideabi-gcc
cflags+= -shared -fPIC -rdynamic -Wno-all
gc=static
executable_extension=.so
merge=mle32

#!/bin/sh

jhc --cross -mandroid \
 --main=Main.android_main \
 hs/Main.hs -o libs/armeabi/libnative-activity &&   
ant debug &&
ant debug install
4

1 に答える 1

2

私は問題を理解しました。「android_main」関数の先頭に「app_dummy()」という関数呼び出しを入れませんでした。

于 2012-04-25T22:41:02.610 に答える