标题
golang在msys2下的编译错误[flag provided but not defined: -V]
clq
浏览(151) +
2023-01-19 16:51:20 发表
编辑
关键字:
[2023-06-24 02:51:47 最后更新]
golang在msys2下的编译错误[flag provided but not defined: -V]
flag provided but not defined: -V
----------------------------------------------------------------
在 msys2 中安装完 golang 后可以用 go version 查看版本。
但用最简单的示例编译都失败。
go build
或者指定具体文件
go build demo.go
都提示失败。感觉很奇怪,msys2 不是 linux 吗? 我在 linux 下就是这样用的啊。
关键就在于 msys2 它不是 linux 。其实安装好后的 golang 还没有配置路径。所以改写成类似跨平台编译式的命令就可以了,例如
```
cd /F/test1/msys2go1/src/t2
export GOPATH=/F/test1/msys2go1
#export PATH=/F/new/msys64/mingw64/lib/go/bin
# 原来的路径不能少,不知为何 msys2 的 golong 即使是编译纯 go 也需要 gcc 环境。
export PATH=/F/new/msys64/mingw64/lib/go/bin:$PATH
export GOROOT=/F/new/msys64/mingw64/lib/go
# rem go build -buildmode=c-shared -o libgolang.dll http_dll.go
# 一般还会关闭 GO111MODULE 。另外据说关闭的情况下 只有在 $GOPATH/src 下的包,才能使用vendor目录存放依赖包。
export GO111MODULE=off
export GO111MODULE=on
# 可切换以上两种方式查看提示进行目录的修正
# 这还不够。用 cgo 的话还要参考别的环境变量,参考 http://newbt.net/ms/vdisk/show_bbs.php?id=E1A34D986D58E5B7A0F0F97B93F0A92F&pid=160
# 另外使用 cgo 的话还要设置一些参数。我的是这两个。不同的项目差异应该比较大,而且怎么写两个呢?
$ export CGO_CFLAGS_ALLOW='-Wl,-luuid'
$ export CGO_LDFLAGS_ALLOW='-Wl,-luuid'
```
然后就可以用
go build -buildmode=c-shared -o libgolang.dll
或者
go build
go build demo.go
正确编出文件了。
这里要特别注意的是
export PATH=/F/new/msys64/mingw64/lib/go/bin:$PATH
不能写成
export PATH=/F/new/msys64/mingw64/lib/go/bin
即还是要包括、保留 msys2 的路径的,回为目前的版本在 msys2 中不知为何还需要 gcc 来编译一部分东西。
我目录的版本为
go version go1.19.3 windows/amd64
----------------------------------------------------------------
另外,在编译一个老版本的 gtk 相关程序时,意外地发现 golang 的 cgo 是可以调用 pkg-config 命令的,代码类似于
```
// +build !cgocheck
package gdk
/*
#include gdk/gdk.h
#include gdk/gdkx.h
// #cgo pkg-config: gdk-2.0 gthread-2.0
*/
import "C"
import "unsafe"
func (v *Window) GetNativeWindowID() int32 {
return int32(C.gdk_x11_drawable_get_xid((*C.GdkDrawable)(unsafe.Pointer(v.GWindow))))
}
```
----------------------------------------------------------------
另外,在第一次编译成功之前,编译的速度极慢,而且极占内存。远远不如直接在 linux 下,即使是虚拟机下的 linux 。
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.