Win10/Win11 使用Wsl的Ubuntu 子系统搭建CGO环境,相当于Ubuntu下开发。GO环境CGO搭建,支持交叉编译

背景:

之前是使用Mac 开发,最近切换到win11下面。发现使用cgo编译有问题。

下面记载了我的使用方法。

环境:

 win11(win10理论一样)

 win11 安装了wsl2的环境,并且安装了ubuntu系统。

 在win11 上面安装了goland

 使用goland 访问wsl 中的ubuntu的环境。相当于在ubuntu下面进行go研发,编译。

环境搭建:

1.进入wsl,cmd等windows的命令行进入wsl子系统。(已经安装了ubuntu系统)

wsl

2. wsl的ubuntu系统内部,下载golang

wget https://golang.google.cn/dl/go1.21.4.linux-amd64.tar.gz

设置golang的环境变量。go_root, go_path 略

eg:放在/home/{user.home}下的某个目录。(便于在goland中可以选择到,如果在d:等盘符下面可能goland中选择不到)

/home/someUser/dev/go_root/go

3.win交叉编译(ubuntu中可以编译 win应用)

wget http://musl.cc/x86_64-w64-mingw32-cross.tgz

4. 编译linux x86 

wget http://musl.cc/x86_64-linux-musl-cross.tgz

5.

 上述的,3,4 的解压后 的bin目录加入 PATH中。

6. 使用path生效

source  ~/.bashrc

 7. windows环境 goland IDE

Setting》GO》GO_ROOT

设置GO_ROOT 指向 wsl下面路径:

eg:

\\wsl$\Ubuntu-22.04\home\someUser\dev\go_root\go1.21.4.linux-amd64\go

8。设置GO_PATH 也可以指向 wsl下面的某个目录

9. 代码拉取,在wsl的ubuntu的某个目录eg:someProject

10.goland 打开wsl子系统ubuntu下面的目录。File 》Open

eg:

\\wsl$\Ubuntu-22.04\home\someUser\someProject

好了配置好了,接下来的打开goland的命令行会发现在wsl子系统中的ubuntu命令行。

11.可以使用脚本编译:eg。build.sh

编译win exe文件命令示例 (wsl ubuntu下面执行命令)

#compile win demo

  go env -w CGO_ENABLED=1
  go env -w GOOS=windows
  go env -w GOARCH=amd64
  go env -w CC=x86_64-w64-mingw32-gcc
  go env -w CXX=x86_64-w64-mingw32-g++

  go build -x -v -ldflags "-s -w" -o  ..build/main.exe main.go

or 采用一行命令方式。

CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ GOOS=windows GOARCH=amd64 go build -x -v -ldflags "-s -w" -o  ../build/main-win.exe main.go

编译linux 执行文件.

   CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build --ldflags "-extldflags -static" -o ../build/main-linux-x86 main.go

参考:

https://golang.google.cn

http://musl.cc

你可能感兴趣的:(编程语言,GoLang,golang,开发语言,后端,交叉编译)