0x00
CGOCGOgccg++
gcc
0x01 安装
mingw-w64
sudo apt install mingw-w64
这句命令主要安装了:
i686-w64-mingw32-gcci686-w64-mingw32-g++x86_64-w64-mingw32-gccx86_64-w64-mingw32-g++
单独安装
sudo apt install gcc-mingw-w64-x86-64-win32 g++-mingw-w64-x86-64-win32
sudo apt install gcc-mingw-w64-i686-win32 g++-mingw-w64-i686-win32
0x02 使用
进行编译时配置环境变量
编译64位windows程序
export GOOS=windows
export GOARCH=amd64
export CC=x86_64-w64-mingw32-gcc
export CXX=x86_64-w64-mingw32-g++
export CGO_ENABLED=1
编译32位windows程序
export GOOS=windows
export GOARCH=386
export CC=i686-w64-mingw32-gcc
export CXX=i686-w64-mingw32-g++
export CGO_ENABLED=1
go build
0x03 实用脚本
64位编译
#!/bin/bash
export GOOS=windows
export GOARCH=amd64
export CC=x86_64-w64-mingw32-gcc
export CXX=x86_64-w64-mingw32-g++
export CGO_ENABLED=1
cd $(pwd)
go build $*
32位编译
#!/bin/bash
export GOOS=windows
export GOARCH=386
export CC=i686-w64-mingw32-gcc
export CXX=i686-w64-mingw32-g++
export CGO_ENABLED=1
cd $(pwd)
go build $*
将代码保存文件,编译时在要进行编译的源码目录直接执行这个文件,例如:
例如文件保存路径为/bin/cgo-w64-x86_64
在进行编译的目录下执行
$ /bin/cgo-w64-x86_64
等同于
$ go build
$ /bin/cgo-w64-x86_64 -ldflags="-X pkg.variable1=value -X pkg.variable2=value"
等同于
$ go build -ldflags="-X pkg.variable1=value -X pkg.variable2=value"
其他以此类推
0x04 其他架构的编译器
gccgo-aarch64-linux-gnu
gccgo-alpha-linux-gnu
gccgo-arm-linux-gnueabi
gccgo-arm-linux-gnueabihf
gccgo-i686-linux-gnu
gccgo-multilib-i686-linux-gnu
gccgo-multilib-powerpc-linux-gnu
gccgo-multilib-powerpc64-linux-gnu
gccgo-multilib-s390x-linux-gnu
gccgo-multilib-sparc64-linux-gnu
gccgo-multilib-x86-64-linux-gnux32
gccgo-powerpc-linux-gnu
gccgo-powerpc64-linux-gnu
gccgo-powerpc64le-linux-gnu
gccgo-riscv64-linux-gnu
gccgo-s390x-linux-gnu
gccgo-sparc64-linux-gnu
gccgo-x86-64-linux-gnux32