Android NDK 搭建 ollvm環境

2021-10-18 19:23:28 字數 1223 閱讀 5107

一、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...