不支持的小精灵机器编号183

问题描述 投票:3回答:1

当我尝试链接64位库时出现此错误。

unsupported ELF machine number 183

我认为由于32位工具机正在尝试链接64位lib,因此此错误即将到来。有人知道如何克服吗?

android archlinux
1个回答
0
投票

很老的问题,但是最近我尝试为Android NDK编译一个简单的命令行应用程序时遇到了同样的问题。

您必须确保所有编译参数都适合:例如如果使用64位库,则还必须使用64位工具链:

export NDK_ROOT=/ndk

SRC_FILES="hello.c"
OUT_FILE=hello

${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang \
  --target=aarch64-none-linux-android \
  --gcc-toolchain=${NDK_ROOT}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64 \
  -I include/ \
  --sysroot=${NDK_ROOT}/platforms/android-24/arch-arm64/ -D__ANDROID_API__=24 -DANDROID_ABI=arm64-v8a -g -DANDROID \
  -isystem ${NDK_ROOT}/sysroot/usr/include \
  -isystem ${NDK_ROOT}/sysroot/usr/include/aarch64-linux-android \
  -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes \
  -pie -fpie -fuse-ld=gold -std=gnu99 \
  -o ${OUT_FILE} ${SRC_FILES} -L . -lsome-64bit-lib

我将--gcc-toolchain与32位混合在一起,并且遇到了与您完全相同的问题。

也许再过一段时间后其他人偶然发现了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.