Kev*_*uan 5 macos cross-compiling go cgo
我尝试使用Go 1.3将cgo代码交叉编译到我的darwin/amd64 MBP上的linux/arm,但结束时没有运气:(
我的环境:
go version go1.3 darwin/amd64
我的目标:
交叉编译针对linux/arm的cgo代码.
步骤1:
使用ct-ng构建gcc/g ++交叉编译器.它是建立一个很长的路arm-unknown-linux-gnueabi-g++和arm-unknown-linux-gnueabi-gcc,但我终于做到了.我测试了简单的C/C++程序,输出在我的linux/arm R-Pi盒子上工作正常.
第2步:
cd/path/to/go/src
sudo CGO_ENABLED = 1 CC_FOR_TARGET =/path/to/arm-unknown-linux-gnueabi-gcc CXX_FOR_TARGET =/path/to/arm-unknown-linux-gnueabi -g ++ GOOS = linux GOARCH = arm ./make.bash
一切都建好了.
第3步:
编译以下简单的cgo代码:
package main
/*
#include <stdio.h>
#include <stdlib.h>
*/
import "C"
import (
"unsafe"
)
func main() {
str := C.CString("abc\n")
C.printf(str)
C.free(unsafe.Pointer(str))
}
Run Code Online (Sandbox Code Playgroud)
对于我的主机:
go install package/of/test
失败了
arm-unknown-linux-gnueabi-gcc: error: unrecognized command line option '-m64'
对于linux/arm:
GOOS=linux GOARCH=arm go install package/of/test
失败了
runtime.main:调用外部函数main.main runtime.main:
undefined:main.main
任何的想法?谢谢.
在 Mac 上交叉编译 Android 时遇到同样的问题。希望对您有帮助。
在第 2 步:
sudo CGO_ENABLED=1 CC_FOR_TARGET=/path/to/arm-unknown-linux-gnueabi-gcc CXX_FOR_TARGET=/path/to/arm-unknown-linux-gnueabi-g++ GOOS=linux GOARCH=arm ./make.bash
为 RANLIB 添加目标,类似这样(我不确定)
sudo CGO_ENABLED=1 CC_FOR_TARGET=/path/to/arm-unknown-linux-gnueabi-gcc CXX_FOR_TARGET=/path/to/arm-unknown-linux-gnueabi-g++ RANLIB_FOR_TARGET=/path/to/arm-unknown-linux-gnueabi-ranlib GOOS=linux GOARCH=arm ./make.bash
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |