如何在cygwin上编译golang

本文介绍如何在Cygwin环境下搭建Go语言的编译环境,包括Mercurial版本控制系统安装、Go源码获取及配置环境变量等关键步骤。

 基本步骤如下:

1、安装hg

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
$ easy_install -U mercurial

2、下载代码

hg clone https://golang-on-cygwin.googlecode.com/hg/ golang-on-cygwin

3、准备编译

vi /etc/profile

 

GOOS=linux

GOARCH=386(目前不支持amd64)

GOROOT=

GOBIN=

注意GOBIN必须存在

另外在$GOROOT/pkg/linu_386必须存在

还有,需要把/src/cmd/gc/mkbuiltin删除后重新建一个

在非 ARM 平台编译 ARM 二进制文件通常采用交叉编译的方式,以下为你介绍不同环境下的编译方法: ### Linux 环境交叉编译 ARM 平台二进制 ELF 文件 使用 Linux 环境进行交叉编译较为合适,若目标是 Windows 平台的 VC,可使用 MYSYS,而 cygwin 只是模拟 Linux 环境。以编译 Android 可用的二进制文件为例,最重要的参数是 `-static`,需选择合适的交叉编译器。示例配置如下: ```sh #!/bin/sh ./configure --prefix=/home/wangsc/android-ffmpeg \ --cross-prefix=/usr/local/arm/bin/arm-none-linux-gnueabi- \ --target-os=linux \ --arch=arm \ --cpu=armv7-a \ --enable-neon \ --enable-gpl \ --enable-version3 \ --enable-nonfree \ --enable-runtime-cpudetect \ --extra-cflags='-static -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp -I/usr/local/libvpx/include' \ --extra-ldflags='-static -L/usr/local/libvpx/lib' \ --enable-static \ --enable-shared \ --enable-libvpx \ --enable-ffserver \ --enable-ffmpeg \ --disable-ffprobe \ --disable-doc \ --disable-debug \ --disable-w32threads make -j4 # 开四个线程编译(可能会出现某些问题) make install ``` 若编译无错误,会在 `prefix` 指定的目录中生成 ARM 平台的二进制文件,可使用 `file filename` 查看文件属性。编译完成后,使用 `adb push` 将文件传入 Android 设备,修改权限为 755 即可运行(Android 中只有 `/system/bin/` 和 `/data/` 目录下可以执行二进制文件,即 ELF 文件,Linux 不需要扩展名)[^2]。 ### Golang 交叉编译 ARM 平台二进制文件 在 Linux 上编译 ARM64 平台的二进制文件,可使用以下命令: ```sh CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc go build -o baseline_client-arm64 baseline_client.go ``` 另外,若要进行 Golang 各个平台的交叉编译,可先安装必要的依赖: ```sh sudo apt-get install libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev ``` [^3][^4]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值