2017-08-01 25 views
2

私はLinux mintとgcc-7とmingw-w64を使用しています。Windowsで実行できる.exeファイルを生成するようにmingwを使ってgtk3 +プログラムをLinuxでコンパイルしたいのですが、通常のCプログラムmingwを使っていますが、gtkプログラムをコンパイルすることはできません。gccでgtkプログラムをコンパイルできますが、mingwではコンパイルできません。 How to compile executable for Windows with GCC with Linux Subsystem?Windows用のLinux mintでC GTK3 +プログラムをコンパイルするには?

今、私は(私が貼り付けています.......私はhttps://developer.gnome.org/gtk3/stable/gtk-getting-started.html#id-1.2.3.5

[email protected]:~/programs/c programs/test$ x86_64-w64-mingw32-gcc test.c `pkg-config --cflags gtk+-3.0 --libs` 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libgtk-3.dll.a when searching for -lgtk-3 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libgtk-3.dll.a when searching for -lgtk-3 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lgtk-3 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/li /libgdk-3.dll.a when searching for -lgdk-3 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libgdk-3.dll.a when searching for -lgdk-3 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lgdk-3 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpangocairo-1.0.dll.a when searching for -lpangocairo-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangocairo-1.0.lib when searching for -lpangocairo-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpangocairo-1.0.dll.a when searching for -lpangocairo-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangocairo-1.0.lib when searching for -lpangocairo-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangocairo-1.0.lib when searching for -lpangocairo-1.0 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lpangocairo-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpangoft2-1.0.dll.a when searching for -lpangoft2-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangoft2-1.0.lib when searching for -lpangoft2-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpangoft2-1.0.dll.a when searching for -lpangoft2-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangoft2-1.0.lib when searching for -lpangoft2-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangoft2-1.0.lib when searching for -lpangoft2-1.0 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lpangoft2-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libfreetype.dll.a when searching for -lfreetype 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libfreetype.dll.a when searching for -lfreetype 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lfreetype 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libfontconfig.dll.a when searching for -lfontconfig 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/fontconfig.lib when searching for -lfontconfig 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libfontconfig.dll.a when searching for -lfontconfig 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/fontconfig.lib when searching for -lfontconfig 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/fontconfig.lib when searching for -lfontconfig 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lfontconfig 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpangowin32-1.0.dll.a when searching for -lpangowin32-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangowin32-1.0.lib when searching for -lpangowin32-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpangowin32-1.0.dll.a when searching for -lpangowin32-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangowin32-1.0.lib when searching for -lpangowin32-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pangowin32-1.0.lib when searching for -lpangowin32-1.0 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lpangowin32-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpango-1.0.dll.a when searching for -lpango-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pango-1.0.lib when searching for -lpango-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libpango-1.0.dll.a when searching for -lpango-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pango-1.0.lib when searching for -lpango-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/pango-1.0.lib when searching for -lpango-1.0 
/usr/bin/x86_64-w64-mingw32-ld: cannot find -lpango-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libatk-1.0.dll.a when searching for -latk-1.0 
/usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/atk-1.0.lib when searching for -latk-1.0 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libatk-1.0.dll.a when searching for -latk-1.0 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/atk-1.0.lib when searching for -latk-1.0 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/atk-1.0.lib when searching for -latk-1.0 
    /usr/bin/x86_64-w64-mingw32-ld: cannot find -latk-1.0 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libcairo-gobject.dll.a when searching for -lcairo-gobject 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libcairo-gobject.dll.a when searching for -lcairo-gobject 
    /usr/bin/x86_64-w64-mingw32-ld: cannot find -lcairo-gobject 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libcairo.dll.a when searching for -lcairo 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/cairo.lib when searching for -lcairo 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib/libcairo.dll.a when searching for -lcairo 
    /usr/bin/x86_64-w64-mingw32-ld: skipping incompatible /opt/gtk3-dos/lib 

などからもらったウィンドウのプログラムをコンパイルしたい - は:ここで言われて、私はmingwのをインストールしていた

この出力は道より大きいと最後の行)

collect2: error: ld returned 1 exit status 

私はすでにこのチュートリアルを経由して行ってきました: - http://www.tarnyko.net/en/?q=node/45

this再びtutorailが、私はgtk+-bundle_3.6.4-20131201_win64.zipをダウンロードしていたし、今私はこの出力を取得しています。この時間VIS: -

[email protected]:~/programs/c programs/test$ x86_64-w64-mingw32-gcc test.c `pkg-config --cflags gtk+-3.0 --libs` 
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/gtk-3.0/gdk/gdkconfig.h:13, 
      from /usr/include/gtk-3.0/gdk/gdk.h:30, 
      from /usr/include/gtk-3.0/gtk/gtk.h:30, 
      from test.c:1: 
    /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)); 
    ^
    In file included from /usr/include/glib-2.0/gio/gio.h:46:0, 
      from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:28, 
      from /usr/include/gtk-3.0/gdk/gdk.h:32, 
      from /usr/include/gtk-3.0/gtk/gtk.h:30, 
      from test.c:1: 
    /usr/include/glib-2.0/gio/gcredentials.h: At top level: 
    /usr/include/glib-2.0/gio/gcredentials.h:75:1: error: unknown type name ‘uid_t’ 
    uid_t   g_credentials_get_unix_user  (GCredentials *credentials, 
    ^
    /usr/include/glib-2.0/gio/gcredentials.h:79:52: error: unknown type name ‘uid_t’ 
               uid_t   uid, 
               ^
+0

上で実行するために対象としているとして、UNIXで実行することはできません.exeファイルを作成します(これは、あなたがしなければなりません –

+0

@BasileStarynkevitchそれは非常に助けになるあなたが私にそれを行う方法を教えている場合、私はここで最大のnoobです:( –

+0

[MXE](http:// mxe .cc /)クロスビルド環境。 – Velkan

答えて

0

私はthisチュートリアルを経て5または多分複数回行ってきたと私は間違っていたものを見つけました。間違ったディレクトリからコマンドを入力して、GTK+ 3 Windows binariesの間違ったバージョンをダウンロードしていました。

私のバージョンのmingwはmingw64ですので、win64バージョンをダウンロードする必要がありました。

と私は/ opt/gtk3-win64からコマンドexport PKG_CONFIG_PATH=/opt/gtk3-win64/lib/pkgconfigを実行していましたが、私はこのコマンドをtest.cファイルがあるディレクトリから実行する必要がありました。

私はこのチュートリアルを今後の読者には簡単にします。

  • thisチュートリアルのリンクが古い、ここでは最新のリンクがある)ここからGTK+ 3 Windows binariesをダウンロード後

    sudo apt-get install mingw-w64 
    
  • コマンドによってmingw cross-compilerをインストールします - http://win32builder.gnome.org/ ダウンロード、適切なバージョン、私は間違ったバージョンをダウンロードしたとして、私と同じ過ちをしないでください。

  • 抽出物は/opt/gtkwinでzipファイルが

    sudo mkdir /opt/gtkwin && sudo unzip <name of the zip file> -d /opt/gtkwin 
    
  • は、あなたが、私はのようには/ opt/gtkwin /に抽出しています。この場合file.In zipファイルを抽出しているディレクトリに移動コマンドで(推奨します) cd /opt/gtkwin

    find -name '*.pc' | while read pc; do sed -e "[email protected]^prefix=.*@[email protected]" -i "$pc"; done 
    
  • 次のコマンドを実行するには、今、あなたにあなたがコンパイルするあなたの.cファイルを持っているディレクトリを行きます。そして今、あなたはまた

    x86_64-w64-mingw32-gcc test.c `pkg-config --cflags gtk+-3.0 --libs` 
    

    (64ビット用)

および32ビットのための

 i586-mingw32msvc-gcc test.c `pkg-config --cflags --libs gtk+-3.0` 

でプログラムをコンパイル

export PKG_CONFIG_PATH=/opt/gtkwin/lib/pkgconfig 
  • このコマンドを実行します私が学んだようにこのチュートリアルを訪れるべきですそこから、この: - http://www.tarnyko.net/en/?q=node/45

    これはおそらくGTK3のクロスコンパイルに必要なすべての依存関係を必要とする、DOS