首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >故障交叉编译与在Mac上使用go 1.3启用cgo

故障交叉编译与在Mac上使用go 1.3启用cgo
EN

Stack Overflow用户
提问于 2014-07-03 14:54:42
回答 2查看 2.9K关注 0票数 5

我试着用Go 1.3将cgo代码编译到达尔文/amd64 64 MBP上的linux/arm,但最终没有结果:(

我的环境:

go version go1.3 darwin/amd64

我的目标是:

交叉编译针对linux/arm的cgo代码。

步骤1:

用ct构造gcc/g++交叉编译器。构建arm-unknown-linux-gnueabi-g++arm-unknown-linux-gnueabi-gcc有很长的路要走,但我终于做到了。我用简单的C/C++程序进行了测试,输出在我的linux/arm R盒上工作得很好。

第2步:

cd /path/to/go/src sudo CGO_ENABLED=1 CGO_ENABLED=1 GOOS=linux GOARCH=arm ./make.bash

一切都很好。

第3步:

编译以下简单的cgo代码:

代码语言:javascript
运行
复制
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))
}

对于我的主机:

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: 未定义: main.main

有什么想法吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-11-09 20:33:40

在Mac上交叉编译Android也有同样的问题。希望它能帮到你。

在第二步:

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

票数 0
EN

Stack Overflow用户

发布于 2017-07-03 09:44:15

作为另一种解决方案,您可以尝试https://github.com/karalabe/xgo

它使与cgo的交叉编译变得非常简单:

  • 安装并运行码头
  • 去找github.com/karalabe/xgo
  • 光盘
  • 目标=linux/arm。

关于如何编译,还有很多其他选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24557057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档