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

Mac M1升级Go版本构建Postgres FDW项目遇arm64链接错误

问题描述
  • 环境:Mac M1(arm64)、Go 1.21、PostgreSQL 14
  • 操作:通过go mod edit --go 1.21将steampipe-postgres-fdw项目的go.mod版本改为1.21后,执行make构建
  • 错误信息:

Undefined symbols for architecture arm64:
"_res_9_nclose", referenced from:
_internal/syscall/unix.libresolv_res_9_nclose_trampoline.abi0 in steampipe_postgres_fdw.a(go.o)
"_res_9_ninit", referenced from:
_internal/syscall/unix.libresolv_res_9_ninit_trampoline.abi0 in steampipe_postgres_fdw.a(go.o)
"_res_9_nsearch", referenced from:
_internal/syscall/unix.libresolv_res_9_nsearch_trampoline.abi0 in steampipe_postgres_fdw.a(go.o)
ld: symbol(s) not found for architecture arm64

解决方法

1. 强制链接libresolv库

修改项目Makefile中的Go构建命令,添加-ldflags="-lresolv"参数,强制链接libresolv库(缺失的符号属于该库)。比如找到Makefile里类似go build的行,修改为:

go build -ldflags="-lresolv" [原有构建参数]

2. 验证PostgreSQL架构适配

确保安装的PostgreSQL 14是arm64版本,而非x86_64通过Rosetta运行的版本。执行以下命令检查:

pg_config --libdir

如果输出路径包含arm64则没问题;若为x86_64,重新安装arm64版PostgreSQL(比如Homebrew下执行brew install postgresql@14)。

3. 清理构建缓存后重试

清理Go构建缓存和项目中间文件,再重新构建:

go clean -cache
make clean
make

4. 临时回退Go版本(备选)

如果以上方法都无效,可切换回Go 1.19版本构建,用版本管理工具(比如goenv)快速切换:

goenv local 1.19
make

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:19:55