gpt4 book ai didi

macos - 在 Mac OS X 上使用 go 1.3 启用 cgo 进行交叉编译时出现问题

转载 作者:IT王子 更新时间:2023-10-29 01:28:23 25 4
gpt4 key购买 nike

我尝试使用 Go 1.3 在我的 darwin/amd64 MBP 上将 cgo 代码交叉编译到 linux/arm,但没有成功:(

我的环境:

go版本go1.3 darwin/amd64

我的目标:

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

第一步:

使用 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))
}

对于我的主机:

go install package/of/test

失败

arm-unknown-linux-gnueabi-gcc:错误:无法识别的命令行选项“-m64”

对于 linux/arm:

GOOS=linux GOARCH=arm go install package/of/test

失败

runtime.main: call to external function 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 ./制作.bash

为 RANLIB 添加目标,像这样(我不确定)

须藤 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

关于macos - 在 Mac OS X 上使用 go 1.3 启用 cgo 进行交叉编译时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com