golang 嵌入式ARM7(交叉编译)
开发板信息
编译环境
安装go环境
sudo apt-get install golang
安装交叉编译工具链
sudo apt-get install gcc-arm-linux-gnueabihf
go version
arm-linux-gnueabihf-gcc -v
编译脚本 (build.sh)
#!/bin/bash # 设置交叉编译环境变量 export GOARCH=arm export GOARM=7 export GOOS=linux export CGO_ENABLED=1 # 启用CGO(如果不使用CGO可以不设置) # 指定交叉编译使用的C编译器 export CC=arm-linux-gnueabihf-gcc # 构建目标文件 go build -o cgotest -tags netgo -ldflags '-w -extldflags "-static"' # 输出构建完成的消息 echo "Build completed. Output file: cgotest"
生成一个不依赖于动态库的静态可执行文件。确保使用 -tags netgo
来避免使用 cgo,这是因为 cgo 可能会导致动态链接(取决于你代码中的 C 依赖)。
检查编译完的程序
将编译完的程序放到板子上运行
测试例子
a.c
// a.c
#include "a.h"
int sum(int a, int b) {
return a + b;
}
a.h
// a.h #ifndef A_H #define A_H int sum(int a, int b); #endif // A_H
main.go
package main import ( "fmt" ) /* #cgo CFLAGS: -I. #include "a.h" */ import "C" // Sum is a function that calls the C sum function func Sum(a int, b int) int { return int(C.sum(C.int(a), C.int(b))) } func main() { a := 3 b := 4 result := Sum(a, b) fmt.Printf("The sum of %d and %d is %d\n", a, b, result) }
qq:505645074