FISCO-BCOS / go-sdk

golang SDK of FISCO BCOS
Apache License 2.0
72 stars 57 forks source link

下载最新go-sdk ,编译控制台报错 client/go_client.go:38:12: undefined: Connection #235

Closed fexture closed 11 months ago

fexture commented 12 months ago

环境: linux centos 7.5 go version: go1.20.6 linux/amd64 fisco bcos节点版本:v3.4

操作说明: 下载go-sdk最新提交代码 ,git clone https://github.com/FISCO-BCOS/go-sdk.git

按照https://github.com/FISCO-BCOS/go-sdk 文档,尝试部署测试合约helloworld.sol, 编译运行时发生错误,错误信息如下:

[root@192 sdkdemo]# go build ../go-sdk/client/go_client.go:38:12: undefined: Connection ../go-sdk/client/go_client.go:54:12: undefined: NewConnectionByFile ../go-sdk/client/go_client.go:63:12: undefined: NewConnection ../go-sdk/client/go_client.go:70:19: undefined: Connection

同时编译控制台程序时也是同样的错误 使用命令: go build -ldflags="-r /usr/local/lib" -o console cmd/console.go 错误如下图所示: image

bxq2011hust commented 12 months ago

git status看下,怀疑你拉的代码有缺失

fexture commented 12 months ago

image 用执行过命令,本地显示的状态是以上这个, 重新下拉最新的执行,结果如下: image 您那边下来最新的可以执行吗,看了github源码,貌似代码不完整

bxq2011hust commented 12 months ago

每个PR都有ci会执行,没问题的。你看下client目录,里面的文件和https://github.com/FISCO-BCOS/go-sdk/tree/master/client能不能对上

ls client
fexture commented 12 months ago

对比了,文件是一样的,没有缺 本地: image 远程: image

编译控制台,执行结果还是出错。 image

bxq2011hust commented 12 months ago

拉代码下来之后有执行go mod tidy吗?

fexture commented 12 months ago

有执行go mod tidy 重新执行一遍,操作记录如下: image 最后编译控制台没有成功,提示信息: client/go_client.go:38:12: undefined: Connection client/go_client.go:54:12: undefined: NewConnectionByFile client/go_client.go:63:12: undefined: NewConnection client/go_client.go:70:19: undefined: Connection

最后也检查了下client目录下的文件,与gihub上的没有什么不同 image

fexture commented 12 months ago

问题找到了, 当前最新master版本go-sdk,使用GO语言版本1.20.X是会有问题,编译控制台及开发应用会报错: 错误信息: client/go_client.go:38:12: undefined: Connection client/go_client.go:54:12: undefined: NewConnectionByFile client/go_client.go:63:12: undefined: NewConnection client/go_client.go:70:19: undefined: Connection

测试使用GO语言版本1.19.x及1.21.x 没有问题

bxq2011hust commented 12 months ago

是的,只能怀疑是语言版本的问题了,但这有点出乎意料

Nxxaux commented 12 months ago

$ go build cmd/console.go

github.com/FISCO-BCOS/go-sdk/client

client/go_client.go:38:12: undefined: Connection client/go_client.go:54:12: undefined: NewConnectionByFile client/go_client.go:63:12: undefined: NewConnection client/go_client.go:70:19: undefined: Connection

我为什么依然编不过去

$ go version go version go1.21.1 linux/amd64

环境是22.04.1-Ubuntu

请问,是不是缺少某些依赖导致的。 go1.19.1 我也试了,一样的报错。 go-sdk 的版本就是默认的master分支

fexture commented 12 months ago

我测试的是centos 7.5,22.04.1-Ubuntu没试过。 建议你尝试下使用go语言稍微底些的版本,如1.18.x,1.19.x试试看呢

Nxxaux commented 12 months ago

module github.com/FISCO-BCOS/go-sdk

go 1.19 <=== 修改成1.19, 原版竟然是1.16.

然后编译通过。 感谢

bxq2011hust commented 11 months ago

有点怀疑是新版本go的编译器对go.mod里面语言版本新的一些定义导致的

phpstudyer commented 9 months ago

根本原因是connection.go里面使用了c 需要go env 开启cgo go env -w CGO_ENABLED="1"