2017-05-27 23 views
0

GO-GTKを使用して画像を表示していますが、プロジェクトはamd64上で正常に動作していますが、アーム(RaspberryPi)用にクロスコンパイルしようとするとエラーになります。 amd64からarm(Raspberrypi3)へgo-gtkをクロスコンパイルする方法を教えてください。RaspberryPi用GO-GTKクロスコンパイル

コンパイラの出力は、それが正常に動作し、32ビット・ライブラリーをAMD64のGTKライブラリを削除して再インストールした後

github.com/mattn/go-gtk/glib 
# github.com/mattn/go-gtk/glib 
In file included from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9:0, 
       from /usr/include/glib-2.0/glib/gtypes.h:32, 
       from /usr/include/glib-2.0/glib/galloca.h:32, 
       from /usr/include/glib-2.0/glib.h:30, 
       from ./glib.go.h:4, 
       from src/github.com/mattn/go-gtk/glib/glib.go:5: 
/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64': 
/usr/include/glib-2.0/glib/gmacros.h:232:53: error: size of array '_GStaticAssertCompileTimeAssertion_0' is negative 
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED 
                ^
/usr/include/glib-2.0/glib/gmacros.h:229:47: note: in definition of macro 'G_PASTE_ARGS' 
#define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2 
              ^
/usr/include/glib-2.0/glib/gmacros.h:232:44: note: in expansion of macro 'G_PASTE' 
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED 
              ^
/usr/include/glib-2.0/glib/gtypes.h:422:3: note: in expansion of macro 'G_STATIC_ASSERT' 
    G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64)); 
^
github.com/mattn/go-gtk/pango 
# github.com/mattn/go-gtk/pango 
In file included from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9:0, 
       from /usr/include/glib-2.0/glib/gtypes.h:32, 
       from /usr/include/glib-2.0/glib/galloca.h:32, 
       from /usr/include/glib-2.0/glib.h:30, 
       from /usr/include/pango-1.0/pango/pango-coverage.h:25, 
       from /usr/include/pango-1.0/pango/pango-font.h:25, 
       from /usr/include/pango-1.0/pango/pango-attributes.h:25, 
       from /usr/include/pango-1.0/pango/pango.h:25, 
       from ./pango.go.h:7, 
       from src/github.com/mattn/go-gtk/pango/pango.go:5: 
/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64': 
/usr/include/glib-2.0/glib/gmacros.h:232:53: error: size of array '_GStaticAssertCompileTimeAssertion_0' is negative 
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED 
                ^
/usr/include/glib-2.0/glib/gmacros.h:229:47: note: in definition of macro 'G_PASTE_ARGS' 
#define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2 
              ^
/usr/include/glib-2.0/glib/gmacros.h:232:44: note: in expansion of macro 'G_PASTE' 
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED 
              ^
/usr/include/glib-2.0/glib/gtypes.h:422:3: note: in expansion of macro 'G_STATIC_ASSERT' 
    G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64)); 

環境変数

GOARCH="arm" 
GOBIN="" 
GOEXE="" 
GOHOSTARCH="amd64" 
GOHOSTOS="linux" 
GOOS="linux" 
GOPATH="/home/minhaj/GoLang" 
GORACE="" 
GOROOT="/usr/local/go" 
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" 
GCCGO="gccgo" 
GOARM="" 
CC="arm-linux-gnueabi-gcc" 
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build977266484=/tmp/go-build -gno-record-gcc-switches" 
CXX="g++" 
CGO_ENABLED="1" 
PKG_CONFIG="pkg-config" 
CGO_CFLAGS="-g -O2" 
CGO_CPPFLAGS="" 
CGO_CXXFLAGS="-g -O2" 
CGO_FFLAGS="-g -O2" 
CGO_LDFLAGS="-g -O2" 
+0

GTK +のラズベリーパイネイティブバージョンをどこかにインストールし、 '$ PKG_CONFIG_PATH'を適切に設定しましたか?あなたがそれをしないと、GTK +プログラムをクロスコンパイルできなくなり、そこにシステム固有のGTK +を使用しようとしているように見えます。 – andlabs

+0

@andlabs、UbuntuにGTK +版のRaspberryPiをインストールし、$ PKG_CONFIG_PATHを設定する方法を教えてください。 – JosephCenk

+0

私は分かりません。ごめんなさい。ラズベリーパイで実行しているディストリビューションのドキュメントを参照する必要があります。あなたの 'go env'出力には、少なくともコンパイラの設定があります。少なくとも、' arm-linux-gnueabi-gcc'を使って説明したドキュメントを探してください。 – andlabs

答えて

関連する問題