golang cgo 交叉编译arm目标

使用crosstool-ng make出arm平台的交叉工具链

使用交叉工具链编译cgo需要的库文件以enet为例

先export PATH=交叉工具链bin目录:$PATH

./configure --host=arm-unknown-linux-gnueabi --prefix=/home/pathletboy/armlib/enet

make && make install

接着.go里指示

#cgo linux CFLAGS: -I/home/pathletboy/armlib/enet/include
#cgo linux LDFLAGS: /home/pathletboy/armlib/enet/lib/libenet.a -static

注意-static 为静态编译

上述方法出错的话可以在go build时候传入,别忘记去掉上述-static指示字

go build -ldflags="-extldflags '-static'"

 

最后编译你的go工程

CC=arm-unknown-linux-gnueabi-gcc GOARCH=arm CGO_ENABLED=1 go build -ldflags="-w -s"

步骤没错的话,那么你的bin就已经出来了。