WINDOWS中的CGO环境搭建
最近的项目需要在windows下编译CGO程序, 之前只提供linux程序, 对windows上面的配置不是特别清楚, 借此机会
配置记录一下, 开发工具是vscode
C环境:
-
首先就是下载msys2,
下载之后安装,
它提供了一个类unix的命令行的环境, 可以帮助我们在windows上面安装一些c的库,
和manjaro一样使用了pacman工具, 所以换源什么的可以参考manjaro那一套
-
安装完成之后继续浏览它的主页, 执行第6条中的命令 , 我给复制出来放在下面
! ! ! 执行:
pacman -S mingw-w64-ucrt-x86_64-gcc
这样就安装上了gcc,同时需要安装一下套件,
! ! ! 执行:
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
-
打开vscode, 安装C++的扩展,
安装之后部分版本会弹出新tab页, 让配置C++环境和路径, 我只需要编译CGO, 所以没有配置
-
把msys2的指定目录配置到windows环境变量中,
C:\msys64\ucrt64\bin
, 注意是ucrt64目录下的bin文件夹
到此, C环境就配置完成了
==========================
Go环境:
我已经在windows上面安装了Go了, 所以下面我将讲述如何把windows上面的go, 配置成可以直接在msys2中使用
首先确定windows上面Go的安装位置, 如果默认安装的话, 路径将会是:
C:\Program Files\go\bin
需要转换成unix下的路径, 也就是
/c/Program\ Files/go/bin
找到自己Go的安装目录之后, 我们就开始配置,
msys2每打开一个命令行窗口, 都会执行~/.bashrc文件, 所以需要修改~/.bashrc文件
- 首先先安装一下vim, 方便我们修改.bashrc文件
pacman -S vim
- 安装完成之后使用vim打开.bashrc文件, 在最后面加上
export PATH=$PATH:/c/Program\ Files/go/bin:/c/Users/xxx/go/bin
注意, 上面的路径替换为你自己的, 第一个是go的可执行文件夹路径, 第二个是go install命令安装的程序bin路径
- 执行
source ~/.bashrc
然后再执行
go env
看到输出go的各项env就是配置成功了
开发
我需要用到的c库是openslide, 在openslide的官网找到了对应的安装命令
pacman -S mingw-w64-x86_64-openslide
执行后, 等待安装完成, 安装的路径是下面两个目录, 可以找到对应的动态链接库和h头文件
/msys64/mingw64/include
/msys64/mingw64/lib
代码如下:
然后点击 regenerate cgo definitions
Go就会帮助我们生成中间文件, 不会出现大片错误提示
注意
编译和运行, 都需要在msys2的命令行中执行, 尽量使用ucrt64
这个命令行
转载自:https://juejin.cn/post/7379446193140580379