1. 程式人生 > 其它 >Windows上編譯ollvm9.0等高版本並使用

Windows上編譯ollvm9.0等高版本並使用

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的高