一、llvm概念
llvm是一套編譯器基礎設施專案,為自由軟體,以c++寫成,包含一系列模組化的編譯器元件和工具鏈,用來開發編譯器前端和後端。它是為了任意一種程式語言而寫成的程式,利用虛擬技術創造出編譯時期、鏈結時期、執行時期以及「閒置時期」的優化。
二、為什麼要將llvm加入到ndk
我們的android專案如果需要儲存比較私密的資料,一般是存放在so檔案中,為了防止so檔案被破解所以我們需要用llvm來混淆加密。
三、將llvm整合的ndk中
2、編譯
解壓縮zip後,進入目錄新建乙個build目錄,然後按照下面的命令編譯(耐心等待,這一過程會很長)。
mkdir build
cd build
#如果不想跑測試用例加上-dllvm_include_tests=off
cmake -dcmake_build_type=release -dllvm_create_xcode_toolchain=on .
./obfuscator/
make -j7
3、整合到android ndk中
找到android sdk目錄中的 …/ndk-bundle/toolchains/llvm 資料夾,先備份下llvm資料夾,可以在不小心搞壞了後及時恢復。然後將obfuscator編譯好的 build/bin 和 build/lib 這2個資料夾直接拷貝到…/llvm/prebuilt/darwin-x86_64/資料夾下,直接覆蓋替換。
4、android nkd使用ollvm
專案中編譯so庫已經整合cmake,所以不需要去修改config.mk 與 setup.mk也是正常的,這裡只介紹了cmake的方式。
在cmakelists.txt中修改如下,新增-mllvm引數。
#設定llvm debug模式混淆編譯
set(cmake_c_flags_debug "$ -mllvm -fla"
)set
(cmake_cxx_flags_debug "$ -mllvm -fla"
)#設定llvm release模式混淆編譯
set(cmake_c_flags_release "$ -mllvm -fla"
)set
(cmake_cxx_flags_release "$ -mllvm -fla"
)
完成後,執行下make project就得到ollvm後的so庫了。 Android NDK 環境搭建
3.開啟adt並設定ndk路徑 4.匯入ndk自帶的例子gl2jni 5.為gl2jni專案增加本地支援 右擊專案 android tools add native support,專案自動轉換為c c 檢視,並自動增加c c 相關檔案。6.右擊專案 build configurations bui...
Ubuntu下搭建Android NDK開發環境
如何在ubuntu 系統下搭建android ndk 開發環境呢?下面一步一步教大家 echo home 檢視當前使用者目錄,即 目錄路徑 home wzhnsc pwd 檢視當前路徑 home wzhnsc android ndk r4b 注 如上路徑是我解壓 android ndk r4b li...
Android NDK 交叉編譯
2,根據ndk裡docs文件裡的standalone toolchain.html來抽取交叉編譯的環境。3,配置sysroot環境變數 sysroot ndk platforms android 8 arch arm android 8是你的android開發版本所定 4,然後執行命令 ndk bu...