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

posted @ 2022-05-27 19:08  怎么可以吃突突  阅读(1835)  评论(0编辑  收藏  举报