登录
首页 >  Golang >  Go问答

升级“go version”以支持Postgres FDW 项目的CGO

来源:stackoverflow

时间:2024-02-15 10:12:25 245浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《升级“go version”以支持Postgres FDW 项目的CGO》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我正在尝试使用最新的 go 版本 (1.21) 在 mac m1 中构建 steampipe-postgres-fdw 项目。

目前使用 go 版本 1.19

fdw 设计用于与 postgresql 14 配合使用。

该项目附带了一个 makefile,它生成带有 c 导入标头的 go 文件(依赖于 pg_config 中的 $path)。

我更改了 go.mod 文件中的 go 指令 (go mod edit --go 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

正确答案


-tags=netgo 添加到 go build 解决了该问题。

文章 here 是关于动态链接在 go 中如何工作的一个很好的参考。

注意:正如 @kostix 提到的,这使用了 go DNS 解析器,“在某些微妙的情况下,其行为可能会稍微偏离“通常预期”的行为”

理论要掌握,实操不能落!以上关于《升级“go version”以支持Postgres FDW 项目的CGO》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>