版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/
OLLVM、LLVM 与 Android NDK
在 Android NDK 中,LLVM/Clang 是默认的编译器。自 Android NDK r18 开始,Google 弃用了 GCC,全面转向使用 LLVM/Clang 作为 NDK 的编译工具链。
NDK 中 LLVM 所在路径:/toolchains/llvm/prebuilt//bin/
查看 clang 版本,这里版本是 18.0.2
(base) PS D:\App\android\sdk\ndk\27.1.12297006\toolchains\llvm\prebuilt\windows-x86_64\bin> ./clang --version
Android (12285214, based on r522817b) clang version 18.0.2 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: D:/App/android/sdk/ndk/27.1.12297006/toolchains/llvm/prebuilt/windows-x86_64/bin
下载和编译与 NDK 中版本相近的 LLVM,具体可以参考这篇文章【编译 LLVM 源码,使用 Clion 调试 clang】
OLLVM 是 LLVM 的一个分支,增加了代码混淆功能(如控制流平坦化、指令替换),主要用于保护二进制代码的安全性。
关于如何移植 OLLVM 到 LLVM 可以参考下面的文章:
编译 LLVM
1. 构建环境设置
创建并进入构建目录
mkdi