You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Libgmp x86_64架构NDK编译:辅助二进制无法运行问题求助

解决Android x86_64交叉编译GMP时辅助二进制无法运行的问题

你的问题本质是交叉编译时辅助工具的架构不兼容:你用NDK的x86_64-android工具链编译了gen-fib这类辅助程序,它们是Android x86_64架构的二进制,无法直接在Ubuntu x86_64主机上运行(Android和Linux的用户空间二进制存在系统调用、动态链接库等差异,且QEMU通常不自动模拟同架构的Android二进制)。而arm64/x86能成功,大概率是Ubuntu默认安装的qemu-user-static帮你模拟了这些异架构的二进制,但x86_64 Android和x86_64 Linux的差异无法被QEMU自动处理。

下面是具体的解决方案:

核心思路

交叉编译时,需要区分主机工具链(用来编译能在Ubuntu上运行的辅助工具)和目标工具链(用来编译Android平台的GMP库)。通过明确指定HOSTCC/HOSTCXX为主机编译器,让configure用主机工具链生成辅助程序,再用NDK工具链编译GMP本身。

修正后的操作步骤

1. 重新生成独立工具链(和你之前的步骤一致)

$NDK/build/tools/make_standalone_toolchain.py --arch "x86_64" --api 27 \
--stl=libc++ --install-dir /tmp/android-toolchain --force

2. 正确设置环境变量

注意区分目标编译器和主机编译器:

# 目标工具链路径
export PREBUILT=/tmp/android-toolchain
export CROSS_COMPILE=${PREBUILT}/bin/x86_64-linux-android-

# 目标平台编译器(NDK提供)
export CC=${CROSS_COMPILE}clang
export CXX=${CROSS_COMPILE}clang++
export AR=${CROSS_COMPILE}ar
export RANLIB=${CROSS_COMPILE}ranlib
export STRIP=${CROSS_COMPILE}strip
export LD=${CROSS_COMPILE}ld

# 主机编译器(Ubuntu系统自带的gcc/clang,用来编译辅助工具)
export HOSTCC=gcc
export HOSTCXX=g++

# 目标平台的编译/链接参数
export CFLAGS="-isystem ${PREBUILT}/sysroot/usr/include/x86_64-linux-android -D__ANDROID_API__=27 -I${PREFIX}/include"
export CPPFLAGS="${CFLAGS}"
export CXXFLAGS="${CFLAGS}"
export LDFLAGS="-Wl,-rpath-link=${PREBUILT}/sysroot/usr/lib/x86_64-linux-android -L${PREBUILT}/sysroot/usr/lib/x86_64-linux-android -lc -lm -ldl -llog -lgcc -L${PREFIX}/lib"

注意:修正了你之前LDFLAGS里的路径笔误($/tmp改为正确的变量引用),同时指定了NDK sysroot下正确的x86_64库路径。

3. 执行configure命令

确保--host设置为正确的Android目标架构,--build可以明确指定主机架构(或省略,configure会自动检测):

./configure --prefix=${PREFIX} \
--host=x86_64-linux-android \
--build=x86_64-unknown-linux-gnu \
--disable-dependency-tracking \
--enable-static \
--disable-shared \
|| exit 1

4. 编译安装

make -j4 || exit 1
make install || exit 1

验证

执行make时,你会看到gen-fib这类辅助程序是用HOSTCC(系统gcc)编译的,生成的是Ubuntu x86_64架构的二进制,能正常运行并生成fib_table.h等所需文件,后续GMP库的编译也会顺利完成。

内容的提问来源于stack exchange,提问作者user654628

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:37:14