【轉】NDK編譯可執行文件在Android L中運行顯示error: only position independent executables (PIE) are supported.失敗問題解決辦法。------不錯


原文網址:http://blog.csdn.net/hxdanya/article/details/39371759

由於使用了NDK編譯的可執行文件在應用中調用,在4.4及之前的版本上一直沒出問題。最近由於要測試在Android L上的運行情況發現,當運行該可執行文件時,報如下錯誤:

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM