Go 1.3 を使用して darwin/amd64 MBP で cgo コードを 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))
}
私のホスト マシンの場合:
go install package/of/test
で失敗しました
arm-unknown-linux-gnueabi-gcc: error: unrecognized command line option '-m64'
Linux/アームの場合:
GOOS=linux GOARCH=arm go install package/of/test
で失敗しました
runtime.main: 外部関数の呼び出し main.main runtime.main:
未定義: main.main
何か案が?ありがとう。