欢迎关注个人的微信公众号《Android安全工程》(可点击进行扫码关注)。个人微信公众号主要围绕 Android 应用的安全防护和逆向分析, 分享各种安全攻防手段、Hook 技术、ARM 汇编等 Android 相关的知识。
源码编译环境: ubuntu 22.04.1 LTS
产物使用环境: window10
NDK版本: 23.1.7779620
选择的NDK
版本:
对应的 llvm 版本:
源码下载
采用清华源
把 NDK 下的 %ANDROID_SDK_PATH%\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64
的 manifest_7714059.xml
文件替换掉 .repo
下的 manifest/default.xml
文件替换(或者直接把内容替换):
这里的 manifest_7714059.xml 文件内的 google 相关的链接需替换成 https://mirrors.tuna.tsinghua.edu.cn/
需要注意,.repo
是隐藏文件夹。可能直接在 Window 下复制文件到 Linux 系统出现乱码问题,推荐使用 FileZilla
复制文件。
编译
--no-build linux
表示不需要编译 Linux 环境下的 toolchain 。
通过比较 toolchains\llvm\prebuilt\windows-x86_64/bin
文件夹下的 clang.exe
和 clang++.exe
发现,两者的 md5 值是相同的,读者感兴趣可以尝试比较下。故可以通过上述的步骤来解决 ollvm 编译出的 clang++.exe
报错问题。
直接把编译好后out/install/windows-x86/clang-dev/bin
中的 clang.exe
替换对应的NDK中的toolchains\llvm\prebuilt\windows-x86_64/bin
的 clang.exe
和 clang++.exe
(需把编译出的 clang.exe
拷贝重命命名替换原NDK中的 clang++.exe
)
问题解决
报错:ImportError: libffi.so.6: cannot open shared object file: No such file or directory
解决:
find /usr/lib -name libffi.so*
sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.8 /usr/lib/x86_64-linux-gnu/libffi.so.6
https://github.com/kk-laoguo/ollvm-13
http://strivemario.work/archives/488c6e54.html
【清羽】Windows10下编译OLLVM-14.x
https://android.googlesource.com/toolchain/llvm_android/
https://bbs.kanxue.com/thread-271271.htm
..\Android\Sdk\ndk\
23.1
.
7779620
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-6-23 15:21
被blx2024编辑
,原因: 调整描述