不支持的精灵机号183

时间:2014-11-27 12:32:18

标签: android archlinux

当我尝试链接64位lib时,我收到此错误。

unsupported ELF machine number 183

我认为,因为32位toolmachine试图链接64位lib这个错误即将来临。 有人知道如何克服这个问题吗?

1 个答案:

答案 0 :(得分: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位混淆,并遇到了与您完全相同的问题。

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