首页
社区
课程
招聘
[原创]编译NDK特定的LLVM版本的流程记录
发表于: 2023-6-23 15:12 7197

[原创]编译NDK特定的LLVM版本的流程记录

2023-6-23 15:12
7197

欢迎关注个人的微信公众号《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_64manifest_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.execlang++.exe 发现,两者的 md5 值是相同的,读者感兴趣可以尝试比较下。故可以通过上述的步骤来解决 ollvm 编译出的 clang++.exe 报错问题。

直接把编译好后out/install/windows-x86/clang-dev/bin中的 clang.exe替换对应的NDK中的toolchains\llvm\prebuilt\windows-x86_64/binclang.execlang++.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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-6-23 15:21 被blx2024编辑 ,原因: 调整描述
收藏
免费 3
支持
分享
最新回复 (1)
雪    币: 3004
活跃值: (30866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-6-23 23:13
0
游客
登录 | 注册 方可回帖
返回
//