交叉编译时 NDK 工具链中的 /system/bin/linker 在哪里

Where is /system/bin/linker from NDK toolchain when cross compiling

本文关键字:system bin linker 在哪里 NDK 工具 交叉编译      更新时间:2023-10-16

我正尝试在 CentOS 主机上针对 NDK 工具链构建一个 autoconf 项目,以便我可以使用作为本机库 android 应用程序的一部分生成的共享对象。

编译时,我收到有关缺少/system/bin/linker64文件的错误。 (bad ELF interpreter: No such file or directory)

这是 NDK 工具链的一部分,我可以将/system/bin/linker64 符号链接到工具链中的某些内容,或者我的 CentOS 动态链接器,还是什么?

我使用以下命令设置我的环境:

$NDK/build/tools/make_standalone_toolchain.py 
  --arch x86_64
  --api 26 
  --install-dir=my-toolchain

我已经找到了这个文件来设置我的环境:

# Add the standalone toolchain to the search path.
export PATH=$PATH:`pwd`/my-toolchain/bin
# Tell configure what tools to use.
target_host=x86_64-linux-android
export AR=$target_host-ar
export AS=$target_host-clang
export CC=$target_host-clang
export CXX=$target_host-clang++
export LD=$target_host-ld
export STRIP=$target_host-strip
# Tell configure what flags Android requires.
export CFLAGS="-fPIE -fPIC"
export LDFLAGS="-pie

我已经运行了我的配置脚本

./configure --host=$target_host ....

无处可去。这不是工具链的一部分。

如果您将其视为构建的一部分,则意味着有人试图在您的主机上运行 Android 二进制文件。这不应该发生。

我的猜测:你的 autoconf 项目被设置为运行"编译器工作吗"测试二进制文件,并且不明白x86_64 Android 与x86_64 GNU/Linux 不同。我在其他项目中看到了这个问题(gdbserver 是我想到的那个)。

你需要仔细看看正在运行什么以及为什么;这里没有足够的信息来肯定地说你需要修复什么。