【发布时间】:2023-03-03 23:47:01
【问题描述】:
LLVM 在 Android NDK 工具链中有什么用?
简单回顾:
我在 Ubuntu 上使用 Gradlew 构建我的本地项目,目标是 arm 和 x86_64 架构。貌似LLVM被用来调用arm-linux-androideabi-4.9的C/C++编译器以及x86_64(?)
以下内容摘自 armeabi-v7a/ndkBuild_build_output.log:
/home/mypc/Android/android-ndk-r17c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -MMD -MP -MF /home/mypc/git/android-project-1/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/module-5/stream_cpp.o.d -gcc-toolchain /home/mypc/Android/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 -fpic -ffunction-sections -funwind-tables -fstack-protector-strong -Wno-invalid-command-line-argument ...
..以下内容摘自x86_64/ndkBuild_build_output.log:
/home/mypc/Android/android-ndk-r17c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -MMD -MP -MF /home/mypc/git/android-project-1/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/module-5/stream_cpp.o.d -gcc-toolchain /home/mypc/Android/android-ndk-r17c/toolchains/x86_64-4.9/prebuilt/linux-x86_64 -target x86_64-none-linux-android -ffunction-sections -funwind-tables -fstack-protector-strong -fPIC -Wno-invalid-command-line-argument ...
- “...”表示我已经剪掉了这条单行命令的长尾。
- 个人文件夹和项目的名称已更改。
让我们看看 Android NDK 的 toolchains 文件夹里面有什么:
myacc:~/.../android-ndk-r17c/toolchains$ tree -L 1
.
├── aarch64-linux-android-4.9
├── arm-linux-androideabi-4.9
├── llvm
├── mips64el-linux-android-4.9
├── mipsel-linux-android-4.9
├── NOTICE-MIPS
├── NOTICE-MIPS64
├── renderscript
├── x86-4.9
└── x86_64-4.9
这让我很困惑。我认为 llvm 是一种工具链,因为它被放置在这里,与其他工具链相邻。同样,LLVM 在 Android NDK 工具链中的实际用途是什么?
感谢您的帮助:)
【问题讨论】:
标签: android c++ linux android-ndk toolchain