小编Kev*_*uan的帖子

nil指针被发送给chan,但收到"非零"

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    errChan := make(chan error)
    go func() {
        var e *exec.Error = nil
        errChan <- e
    }()
    err := <-errChan
    if err != nil {
        fmt.Printf("err != nil, but err = %v\n", err)
    }
}
Run Code Online (Sandbox Code Playgroud)

输出很奇怪:err != nil, but err = <nil> 在这里试试:http://play.golang.org/p/_iyh0m7O1a

null go

9
推荐指数
1
解决办法
2849
查看次数

麻烦在Mac OS X上使用go 1.3启用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 …

macos cross-compiling go cgo

5
推荐指数
1
解决办法
1812
查看次数

标签 统计

go ×2

cgo ×1

cross-compiling ×1

macos ×1

null ×1