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一样