gpt4 book ai didi

gcc - "go get"不只是获取文件然后 cgo +"go build"它们吗?显然不是

转载 作者:IT王子 更新时间:2023-10-29 02:24:44 26 4
gpt4 key购买 nike

我在构建一个相当简单的本地 CGO 项目时遇到了问题。考虑 this very small CGO package只有 3 个文件(glut.go、support.c 和 support.h 文件)——如果我只是去获取它,这些文件将下载到

C:\Go\src\pkg\github.com\zombiezen\Go-GLUT\glut

然后一些神秘的魔法发生了,go get 构建了以下输出文件:

C:\Go\pkg\windows_amd64\github.com\zombiezen\Go-GLUT\glut.a

但是,如果我将这三个源文件复制到\mytmp,cd 到\mytmp 并go build -o glut.a glut.go,我会收到大约 40-60 条这样的错误消息:

C:\Users\roxor\AppData\Local\Temp\go-build191975110\command-line-arguments\_obj\glut.cgo2.o: In function `_cgo_b46885fb7c57_Cfunc_goCreateMenu':
./glut.go:195: undefined reference to `goCreateMenu'

如果我使用 -x 命令行参数运行 go get,我可以看到 support.c 在构建过程并提供给 gcc:

gcc -I . -g -O2 -m64 -mthreads -I $WORK\github.com\zombiezen\Go-GLUT\glut\_obj\ -o $WORK\github.com\zombiezen\Go-GLUT\glut\_obj\support.o -c .\support.c

然而,使用go build -x,情况并非如此,support.c 被跳过。为什么?我如何调用 go build 以像 go get 一样工作?

最佳答案

只需执行 go build 而不是 go build somefile.go 即可。现在很明显......

关于gcc - "go get"不只是获取文件然后 cgo +"go build"它们吗?显然不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com