Windows上編譯ollvm9.0等高版本並使用
阿新 • • 發佈:2022-05-27
ollvm官方只更新維護到llvm的4.0版本,github上有大佬移植了高版本的llvm,連結為:https://github.com/heroims/obfuscator/tree/llvm-9.0.1
編譯ollvm9.0.1
編譯環境和ollvm4.0的編譯環境一樣,採用mingw64 + ollvm9.0.1 + ndk 21.1.6352462。
採用vs2019和ninja編譯都可以成功但是使用時各種異常,只有mingw64編譯的可以正常使用。
mkdir build cd build cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ../ make
整合ollvm9.0.1到ndk中
這裡注意ollvm編譯得到的clang版本要和ndk中clang的版本相近。
檢視ndk 21.1.6352462中的ndk\21.1.6352462\toolchains\llvm\prebuilt\windows-x86_64\bin目錄下clang的版本
以同樣的方法檢視編譯好的ollvm9.0.1中clang的版本,如果與ndk中clang的版本差別較大可能會產生錯誤。
- 將編譯後的build\bin資料夾中的clang.exe clang++.exe clang-format.exe 複製到ndk的toolchains\llvm\prebuilt\windows-x86_64\bin資料夾下,覆蓋目標檔案
- 將編譯後的build\lib\clang\9.0.1\include資料夾中的__stddef_max_align_t.h stddef.h stdarg.h float.h 複製到ndk的toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include資料夾下
注意:標頭檔案複製到的位置和ollvm4.0低版本的略微有點不一樣
使用ollvm9.0.1
使用方法和ollvm4.0一樣,其混淆的程度貌似要比ollvm4.0的高