【发布时间】:2018-01-05 20:50:17
【问题描述】:
我一直在研究一个 GitHub 项目,该项目可以交叉编译适用于 Android 的 Python https://github.com/GRRedWings/python3-android/tree/clang
Google 很快就会在 NDK 中弃用 gcc,所以我一直在尝试从使用 gcc 切换到 clang。
几年前我偶然发现了这个项目,并且一直在尝试使用当前版本的库来维护它,但是这个让我很难过。我已经更新了上面的分支,我认为它是用clang编译的,但是它无法链接到以下错误
/home/python3-android/sdk/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/ld: unrecognised emulation mode: elf_x86_64
Supported emulations: aarch64linux aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb aarch64linuxb aarch64linux32 aarch64linux32b armelfb_linux_eabi armelf_linux_eabi
clang: error: linker command failed with exit code 1 (use -v to see invocation)
../Makefile.shared:164: recipe for target 'link_app.' failed
在第一行的末尾是无法识别的emulation mode elf_x86_64。我不明白它从哪里获得模拟模式,或者如何更改它。
arm 或 arm64 出现同样的错误。我使用 2 个文件来设置环境和 makefile 变量
环境 -- https://github.com/GRRedWings/python3-android/blob/clang/env
和
build_single.sh -- https://github.com/GRRedWings/python3-android/blob/clang/mk/build_single.sh
我对交叉编译和需要什么比较陌生,此时只是不知道该去哪里找。
根据我继承的脚本,我有以
开头的 CPPFLAGS 和 LDFLAGS-target aarch64-none-linux-android -gcc-toolchain ${NDK_ROOT}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
【问题讨论】:
标签: python android-ndk clang clang++ llvm-clang