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

x86_64 Ubuntu交叉编译zlib for Android arm64/aarch64报错求助

解决x86_64 Ubuntu交叉编译Android arm64 zlib 1.2.13的链接错误

你的问题核心是未正确指定交叉编译工具链,且默认未启用位置无关代码(PIC),导致编译时误用了x86_64系统的链接器,触发重定位错误。-fPIC确实是必要解决方案,但还要配合完整的交叉编译配置。

具体解决步骤:

  1. 先清理之前的编译残留,避免旧配置干扰:
    make clean && rm -f Makefile config.h
    
  2. 配置时明确指定Android arm64的交叉编译工具链,并强制启用PIC:
    # 替换为你本地Android NDK的工具链路径/前缀,版本号按需调整
    CC=aarch64-linux-android-gcc \
    CXX=aarch64-linux-android-g++ \
    AR=aarch64-linux-android-ar \
    RANLIB=aarch64-linux-android-ranlib \
    CFLAGS="-fPIC" \
    ./configure --prefix=/your/target/install/path --static --shared
    
    参数说明:
    • CC/CXX/AR/RANLIB:指定arm64架构的交叉编译工具,若工具未加入系统PATH,需写绝对路径(比如/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-gcc)
    • CFLAGS="-fPIC":强制生成位置无关代码,这是Android动态库的硬性要求
    • --prefix:指定编译完成后库的安装目录,方便后续拷贝到App项目中
    • --static --shared:同时生成静态库和动态库,可根据需求只保留其中一个
  3. 执行编译安装:
    make && make install
    

补充说明:

仅用CHOST=arm64无法让zlib的configure脚本正确识别交叉编译环境,它仍会默认使用x86_64系统的编译工具,导致生成的目标文件架构不匹配,最终触发链接阶段的重定位错误。必须显式指定交叉编译工具链,才能生成符合arm64架构要求的库文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:35:19