NDK編譯可執行文件在Android 中運行顯示error: only position independent executables (PIE) are supported.失敗問題解決辦法。
阿新 • • 發佈:2017-08-30
Language target 安全 問題 可執行 port ace 知識 基於
由於使用了NDK編譯的可執行文件在應用中調用,在Android 7.0上的運行情況發現,當運行該可執行文件時,報如下錯誤:
error: only position independent executables (PIE) are supported.
PIE這個安全機制從4.1引入,但是Android L之前的系統版本並不會去檢驗可執行文件是否基於PIE編譯出的。因此不會報錯。但是Android L已經開啟驗證,如果調用的可執行文件不是基於PIE方式編譯的,則無法運行。解決辦法非常簡單,在Android.mk中加入如下flag就行。
LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -Wl,--fatal-warnings
linker_flags = ‘ -Wl,--no-wchar-size-warning ‘,
NDK編譯可執行文件在Android 中運行顯示error: only position independent executables (PIE) are supported.失敗問題解決辦法。