JHC是一個Haskell編譯器,它可移植生成C代碼,然後調用編譯器後端來創建可執行文件。我如何才能讓JHC與android ndk合作?
我需要轉儲JHC運行時系統的頭文件和庫,所以android ndk可以使用它來編譯生成的C代碼。
或者,我需要弄清楚如何將android API鏈接到JHC。
基本上,我該如何將JHC插入到android ndk後端?
編輯:我做了一個獨立的編譯器,使用JHC可以使用的一個ndk構建工具「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
爲什麼共享庫無法加載?是否有錯誤訊息?另外,你是從Java應用程序加載它,還是試圖從C/C++代碼中調用它(我懷疑後面的代碼,因爲你似乎使用NativeActivity)? – gfour 2012-04-25 09:26:13
我正在使用本機活動膠水代碼。我非常沮喪的部分原因是錯誤信息很不明確。我真的好奇,是否有辦法獲得更好的。似乎只有兩個不同的,一個表明庫無法找到,(我固定),一個指示庫將無法正確加載。 – 2012-04-25 21:31:36