登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> CLQ工作室开源代码 >> 主题: golang在msys2下的编译错误[flag provided but not defined: -V]     [回主站]     [分站链接]
标题
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 。









总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
golang 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1