TDEngine在M1 macOS下go connector编译报ld: symbol(s) not found for architecture x86_64错误的解决方法和思路

文章讲述了作者在M1Mac上使用Go语言连接TDEngine时遇到的编译错误,错误原因是使用了非匹配架构的Go环境。通过检查和分析,作者发现Go的编译目标是x86_64而非本机的arm64,通过设置GOARCH=arm64和启用CGO解决了问题。解决方案包括确保安装正确架构的Go,以及设置环境变量进行编译。

-1 后期本文修订

后期编辑:这篇文章在发布后作者发现了下文有很多不正确的地方,请批判看待
之所以写在前面,是因为后来作者发现了问题的核心原因并非作者下文所述。证明的点在于:比如为什么CGO_ENABLED是需要再交叉编译情况下开启的,但是arm64是作者当时本机的架构,不应该涉及交叉编译。

实际上,在M1上安装了arm架构的go语言就不会存在任何问题,但是不小心装了intel x86_64架构的go语言就会给作者造成本文所述的困扰。所以如果有遇到相同问题的朋友,请先确保自己在本机装了对应架构的go。如果一定需要再本机使用Intel版本的Go的朋友,估计也很清楚该怎么解决问题了,但是不清楚的可以往下看看。

0. 背景

第0、1章是随便啰嗦几句做个日记,如果想看解决方案的病友请直接去2或3.

最近由于公司项目,需要使用Go语言连接TDEngine实现一些增删改查。由于本人即是Go新手,又是TDEngine新手,在第一个链接测试的代码实现上就碰上了一个坑。
本人使用的是M1的Macbook Pro + GoLand + Go 1.17 + TDEngine 3.x,从官网下载了arm64版本的TDEngine Client,兴高采烈写了如下TDEngine的Helloworld:

package main

import (
	"database/sql"
	"fmt"
	"log"
	
	_ "github.com/taosdata/driver-go/v3/taosSql"

)

func main() {
   
   
	var taosDSN = "root:taosdata@tcp(localhost:6030)/"
	taos, err := sql.Open("taosSql", taosDSN)
	if err != nil {
   
   
		log.Fatalln("failed to connect TDengine, err:", err)
		return
	}
	fmt.Println("Connected")

	if _, err 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值