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

M1(ARM)架构MacBook编译Jabcode失败求助

解决M1 Mac编译Jabcode Reader/Writer的链接错误问题

问题根源

Jabcode自带的libpng16.a、libtiff.a、libz.a是针对非arm64架构编译的,M1的arm64系统无法识别这些库文件格式,导致链接时被忽略,进而出现符号未定义错误。

解决步骤

1. 安装arm64兼容的依赖库

用Homebrew安装原生arm64版本的libpng、libtiff和zlib:

brew install libpng libtiff zlib

2. 修改Reader/Writer目录下的Makefile

找到Reader或Writer文件夹中的Makefile,做两处修改:

  • 编译头文件路径:在CFLAGS后添加Homebrew的头文件路径(确保编译器能找到依赖的头文件):
    CFLAGS += -I/opt/homebrew/include
    
  • 链接参数:删除指向Jabcode自带库的-L../jabcode/lib,同时将-lpng16改为-lpng(Homebrew安装的libpng库名为libpng.a),如果需要手动指定库路径,添加-L/opt/homebrew/lib。修改后的链接命令示例:
    gcc jabwriter.o -L../jabcode/build -ljabcode -L/opt/homebrew/lib -ltiff -lpng -lz -lm -O2 -std=c11 -o bin/jabcodeWriter
    

3. 清理旧编译产物,重新编译

  • 先清理Jabcode主目录的旧产物:
    cd path/to/jabcode
    make clean && make
    
  • 再进入Reader或Writer目录清理并编译:
    cd path/to/jabcode/Reader # 或Writer目录
    make clean && make
    

补充:关于x86_64架构编译

如果需要编译x86_64版本,需通过Rosetta打开终端,安装x86版本的Homebrew(路径为/usr/local),再安装对应架构的依赖库,然后在Makefile的CFLAGS和LDFLAGS中添加-arch x86_64,确保所有编译步骤都基于x86_64架构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:10:31