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

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

2023-6-23 15:12
5378

欢迎关注个人的微信公众号《Android安全工程》(可点击进行扫码关注)。个人微信公众号主要围绕 Android 应用的安全防护和逆向分析, 分享各种安全攻防手段、Hook 技术、ARM 汇编等 Android 相关的知识。

LLVM源码下载

源码编译环境: ubuntu 22.04.1 LTS

产物使用环境: window10

NDK版本: 23.1.7779620

选择的NDK版本:

1
..\Android\Sdk\ndk\23.1.7779620

对应的 llvm 版本:

1
..\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\AndroidVersion.txt
1
2
12.0.8
based on r416183c1

源码下载

采用清华源

1
2
3
4
5
6
7
8
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
 
mkdir llvm-toolchain && cd llvm-toolchain
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b llvm-toolchain

把 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 复制文件。

1
2
repo init -m default.xml
repo sync -c

编译

1
python toolchain/llvm_android/build.py --no-build linux

--no-build linux表示不需要编译 Linux 环境下的 toolchain 。

移植LLVM模块

通过比较 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


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

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