2013-04-05 104 views
0

我正在嘗試爲android創建一個本機可執行文件,並且它不斷崩潰。使用readelf和objdump復原來測試該文件,該文件被認爲是共享對象文件。 我使用的R8E與編譯NDK,建立

test.c的:

int main(){ 
    return 0; 
} 

Android.mk:

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_SRC FILES := test.c 
LOCAL_MODULE := test 

include(BUILD_EXECUTABLE) 

-

設置APP_PLATFORM到Android -9導致創建一個可執行文件(並且沒有崩潰)。

回答

0

您是否嘗試過爲main()方法指定參數int argschar *argv[]?另外,你在哪裏試圖運行它?

+0

是的,我跑這對三星Galaxy S運行的CyanogenMod 9 – 2013-04-17 23:33:29

0

下面是我從谷歌得到了答案:

這是正常的。 默認情況下,當定位API級別17或更高時,「位置獨立可執行文件」(又名PIE)由BUILD_EXECUTABLE規則生成。

這些是可執行文件,但它們僅在Android 4.1或更高版本上受支持。有關更多詳細信息,請參見[1]。

如果你真的不想要這些(例如,因爲你希望你的程序在平臺的早期版本中運行),你有兩個選擇:

  • 目標更低的API級別。
  • 使用 'APP_PIE:=假' 你Application.mk