2017-08-01 3 views
2

Ich benutze Linux mint und gcc-7 und mingw-w64.Ich möchte ac gtk3 + Programm in Linux mit Mingw zu kompilieren, so dass es .exe-Datei, die in Windows ausgeführt werden kann. Ich bin in der Lage, normale c-Programme zu kompilieren mit mingw, aber ich kann nicht gtk-programme kompilieren. ich kann gtk-programme mit gcc aber nicht mit mingw kompilieren.Wie kompilieren C GTK3 + Programm in Linux mint für Windows?

hatte ich installiert mingw wie hier gesagt: - How to compile executable for Windows with GCC with Linux Subsystem?

Jetzt möchte ich Fenster Programm kompilieren, die ich von https://developer.gnome.org/gtk3/stable/gtk-getting-started.html#id-1.2.3.5 bekam

[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 

und so ....... (ich einfügen die letzte Zeile wie diese Ausgabe ist viel mehr groß)

collect2: error: ld returned 1 exit status 

ich bereits über dieses Tutorial ging: - http://www.tarnyko.net/en/?q=node/45

Jetzt vis this tutorail wieder, aber dieses Mal habe ich gtk+-bundle_3.6.4-20131201_win64.zip heruntergeladen hatte und jetzt diese Ausgabe erhalte ich: -

[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

Sie wahrscheinlich zu müssen Quer kompilieren alle erforderlichen Abhängigkeiten von GTK3 (die Sie sollten Cross-configure und Cross-Compile für Windows) –

+0

@BasileStarynkevitch Es wird so viel Hilfe Wenn Sie mir beibringen, wie es zu tun, denn ich bin der größte noob hier :( –

+0

Sie können versuchen, die [MXE] (http: // mxe .cc /) Cross-Build-Umgebung. – Velkan

Antwort

0

Ich habe über this Tutorial 5 oder vielleicht mehrmals gegangen, und ich fand, was falsch war. Ich habe Befehle von falschen Verzeichnissen verlangt und die falsche Version von GTK+ 3 Windows binaries heruntergeladen.

Meine Version von Mingw ist mingw64, also musste ich win64 Version herunterladen.

und ich führte Befehl export PKG_CONFIG_PATH=/opt/gtk3-win64/lib/pkgconfig von/opt/gtk3-win64, aber ich musste diesen Befehl über ein Verzeichnis ausführen, in dem meine test.c-Datei war.

Ich werde dieses Tutorial für zukünftige Leser leicht machen.

  • installieren mingw cross-compiler von Befehl

    sudo apt-get install mingw-w64 
    
  • Dann GTK+ 3 Windows binaries Download von hier (Link in this Tutorial ist alt, hier ist die neueste Link): - http://win32builder.gnome.org/ herunterladen entsprechende Version als ich falsche Version wurde das Herunterladen Mach nicht den gleichen Fehler wie meiner.

  • Extrakt die Zip-Datei in /opt/gtkwin (empfohlen) durch Befehl

    sudo mkdir /opt/gtkwin && sudo unzip <name of the zip file> -d /opt/gtkwin 
    
  • dann Verzeichnis, in dem Sie die Zip-file.In diesem Fall extrahiert habe ich in/opt/gtkwin/extrahiert haben wie cd /opt/gtkwin und führen Sie den folgenden Befehl

    find -name '*.pc' | while read pc; do sed -e "[email protected]^prefix=.*@[email protected]" -i "$pc"; done 
    
  • Jetzt Verzeichnis zu Ihnen gehen, in dem Sie C-Datei, die Sie, die kompilieren.und führen Sie diesen Befehl

    export PKG_CONFIG_PATH=/opt/gtkwin/lib/pkgconfig 
    
  • jetzt das Programm zusammenstellen, indem

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

    (für 64-Bit)

und für 32-Bit-

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

auch Sie sollte dieses Tutorial besuchen, wie ich es gelernt habe diese von dort: - http://www.tarnyko.net/en/?q=node/45

diese .exe-Datei erstellen wird, die nicht in UNIX laufen kann, da es gezielt auf DOS laufen

Verwandte Themen