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

标签 android c++ android-ndk

我正在尝试在 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/

相关文章:

c++ - 制作比较器函数的 vector

Android:动态加载共享库

android - 从原生 C 代码 NDK 启动 Android Java VM(ffmpeg mediacodec 使用)

android - 如果用户向下/向上滑动,不要关闭 Photoswipe

android - Android 中的 AlertDialog.Builder.show() 与 AlertDialog.show()

c++ - 如何删除可以是指针(模板)的变量?

android - 返回 ~SkSpriteBlitter() 时我遇到了skia native 崩溃

android - 为什么 Android Facebook 界面不支持 Fragments?

android - 如何将cookies与android webview同步?

c++ - 使用 zlib 将字节数组解压缩为字节数组