我正在尝试在 CentOS 主机上针对 NDK 工具链构建一个 autoconf 项目,因此我可以使用作为 native-lib android 应用程序的一部分生成的共享对象。
编译时,我收到有关缺少 /system/bin/linker64
文件的错误。 (错误的 ELF 解释器:没有这样的文件或目录)
这是 NDK 工具链的一部分吗,我可以将/system/bin/linker64 符号链接(symbolic link)到工具链中的某个东西,或者我的 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 是我想到的那个)。
您需要仔细查看正在运行的内容及其原因;这里没有足够的信息来确定您需要修复什么。
关于android - 交叉编译时NDK工具链的/system/bin/linker在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54154940/