2016-08-01 36 views
0

was muss ich zum kompilieren von file.c installieren, das gtk2 e file glade verwendet (macht mit glade 3.8)?Wie ein Projekt auf MinGW kompilieren, die gtk und file.glade verwenden?

i installieren libglade mit Pacman -S und ich versuchte mit gcc -export-dynamic file.c -o Browser $ (pkg-config --cflags --libs gtk + -2.0) \ $ (pkg- zu kompilieren config --cflags --libs libglade-2.0) nach diesem MinGW funktioniert nicht .. für jeden comand es in der Ausgabe Dinge wie eingegeben:

1367211018 [Haupt] bash 9420 fork: Kind -1 - gegabelten Prozess 8876 starb unerwartet, try 0, Code 0xC0000005, errno 11 bash: fork: retry: Keine Kindprozesse 1368436447 [main] bash 9420 fork: untergeordnetes -1 - gegabelter Prozess 3968 starb unerwartet ly, retry 0, Exitcode 0xC0000005, errno 11 bash: fork: Erneut versuchen: Keine Kindprozesse 1370680659 [main] bash 9420 Gabel: Kind -1 - gegabelten Prozess 1404 unerwartet ly gestorben war, versuchen Sie es erneut 0, Exit-Code 0xC0000005, Fehlernummer 11 bash: Gabel: Wiederholungs: Kein Kind verarbeitet bash: Gabel: Kein Kind verarbeitet

Wie kann ich das lösen und Projekt mit gtk (C), file.glade kompilieren? Haben Sie eine Anleitung?

+0

Etwas im Build-Prozess ist mit einer Zugriffsverletzung abgestürzt (entspricht einem segfault auf Nicht-Windows-Plattformen). Was passiert, wenn Sie nur 'pkg-config --cflags --libs gtk + -2.0' selbst ausführen? – andlabs

+0

funktioniert es OutPut-mms-bitfields-pthread-mms-bitfields -IC:/msys32/mingw32/include /gtk-2.0-IC:/msys32/mingw32/lib/gtk-2.0/include-IC:/msys32/mingw32/include/pango-1.0 -IC:/msys32/mingw32/include + ecc – Pegasum

+0

Wenn ich gcc -W Datei.c $ ausführen (pkg-config --cflags --libs gtk + -2.0) antwortet er mit gcc: interner Compiler Fehler: Segmentierungsfehler (Programm als) Bitte senden Sie einen vollständigen Fehlerbericht, mit vorverarbeiteten Quellen, falls zutreffend. Siehe für Anweisungen. – Pegasum

Antwort

1

Das ist nicht gerade eine Antwort, da ich aus den bereitgestellten Informationen nicht genau herausfinden kann, was Ihr Problem ist. Also, ich brauche mehr Platz im Vergleich zu dem, was das "Kommentar" -Box oben erlaubt (wenn SO-Moderatoren dadurch verärgert sind, lass es mich wissen, und ich werde meinen Beitrag ablehnen).

Erstens, was meinst du, wenn du "MinGW" sagst? (Im Anschluss an die ausgezeichneten Anweisungen wie diese (http://ingar.satgnu.net/devenv/mingw32/index.html zB))

2) Sie haben

1) Sie eine richtige MinGW Umgebung aufgebaut haben und den gesamten Code von Grund auf neu kompiliert herunterladen einige Windows-Binärdateien für: Wollen Sie damit sagen Lichtung usw.?

3) Sie verwenden MSys2?

Wenn Sie Msys2 verwenden, würde ich überrascht sein, dass Ihre Glade Gtk + (2) ist, da AlexPu (der Chefschotte bei MSys2) mir persönlich gesagt hat, dass er keine Gtk + (2) Variante von Glade erstellen wird , da er denkt, dass das zu viel Konflikt mit der Gtk3-Variante verursachen würde. Das heißt, auf Msys2 ist der einzige Weg, eine (MinGW) Gtk + (2) -kompatible Glade zu haben, die Verwendung des MSys2/AlexPu-Mechanismus zum Erstellen eines unbekannten Problems. Wir haben es nie geschafft, das zu erstellen, nicht einmal mit der Hilfe von MSys2 (und dieser Prozess wirft viele Bash-Fehler auf).

Daher ist eine Möglichkeit, dass Sie eine Gtk3 Glade-Variante mit Gtk2-Code verwenden, die nie funktionieren wird, aber das kann nicht das einzige "Problem" sein, siehe unten.

Auch Ihre Bezugnahme auf libs sieht ein bisschen anders aus, als wir es erwarten würden, wenn Sie richtige MinGW Gtk + Maschinen hätten. Zum Beispiel alle unsere Win/Gtk + (2) Anwendungen, in der Regel, müssten zumindest die folgende Libs erforderlich:

$ (# gtk) \ bin \ libgtk-win32-2.0-0.dll

$ (# gtk) \ bin \ libgdk-win32-2.0-0.dll

$ (# gtk) \ bin \ libgobject-2.0-0.dll

$ (# gtk) \ bin \ libglib-2.0-0.dll

...und in der Regel viel mehr für Pango, Kairo, etc.

Diese sollten die gleichen sein, ob Sie von Grund auf neu kompiliert, oder wenn nur "über MSys2/Pacman installiert".

Natürlich wird es sicher andere Abhängigkeiten und "Suchpfade" geben, und verschiedene Dinge müssen auf Ihrem "Pfad" sein.

Zweitens sind Ihre Fehlermeldungen ziemlich seltsam, und nennen "Bash" Probleme. Das klingt mehr wie "scripting/instruction" Probleme innerhalb welcher MinGW/Unix-ähnlichen Shell/System Sie arbeiten.

Sie klingen nicht wie "ordnungsgemäße Gtk Abstürze". In der Regel, Windows, wird tatsächlich eine SIGSEGV und auch im Debugger-Protokoll wird es tatsächlich die Worte "segmentation fault" usw. Wenn die SIGSEGV ist wirklich böse, kann Windows "nichts" explizit sagen (leere Konsole, etc), und Ihre GDB sieht möglicherweise nur "einige" von "einigen" Problemen.

Wenn Sie Glade verwenden, ist es nur eine XML-Datei, die versucht, Ihr Gtk-Leben zu erleichtern. Gtk verfügt über Code zum Interpretieren der Glade-XML-Dateien in ansonsten virtuellen "Gtk-Code". Ehrlich gesagt, haben wir festgestellt, dass Glade in vielen Fällen mehr Probleme macht als ihr Wert, und das Schreiben der GUI über Code ist effizienter, oft auch nicht immer.

Drittens ist es möglich (wir haben es getan), Glade basierend auf Windows-Binärdateien und Link zu libs darin zu verwenden, aber das wäre für die Glade-Bibliotheken, Sie müssten immer noch die (korrekten) Gtk + -IBs erhalten .

Wie Sie sehen können, ist es schwierig, eine genaue Antwort zu geben, ohne mehr über Ihre Einrichtung zu wissen.

Ich würde auch dringend empfehlen, dass Sie nicht über die Befehlszeile ausführen. Es kann getan werden, aber es gibt viel zu viel im Weg von frechen Dingen, die "verbunden" werden müssen, damit Gtk/Glade/GCC usw. alle richtig miteinander reden. Ich würde dringend empfehlen, Code :: Blocks (http://www.codeblocks.org/) zu installieren; es ist kostenlos und ausgezeichnet (oder eine anständige IDE). Dann können Sie sehr einfach Ihre Pfade/Abhängigkeiten einrichten (nachdem Sie die Existenz der dlls/libs und ihren genauen Pfad, Versionen, tc. Bestätigt haben).

Auch die Community des CodeBlocks verfügt über beträchtliche Erfahrung bei der Integration externer Pakete (wie Glade/GCC/Gtk usw.).

Einige, nicht alle, MinGW-DLLs enthalten Versionsnummern, klicken Sie mit der rechten Maustaste auf die DLL, klicken Sie auf Eigenschaften und suchen Sie, abhängig von Ihrem Betriebssystem, "Version" oder "Details" etc, wo die Versionsnummer der DLL gehalten wird. Alle Gtk werden es tun. Oft enthält der Dateiname auch die Versionsnummer "Indikator", aber manchmal ist es am besten, sicher zu sein.

BTW, wenn Ihre Glade eine ver num> 3.8.5 hat, dann ist es fast sicher Gtk3.

Übrigens, wenn du alles "richtig" codiert hättest und alle libs usw. geliefert hättest, aber einige der Bibliotheken waren Gtk2, während andere Gtk3 waren (und es gibt keine anderen größeren Probleme), dann würde Gtk selbst es ablehnen, und sage dir, dass es "gemischt 2 und 3" nicht akzeptiert.

... wie zuvor war unsere Erfahrung mit MSys2 eine unglückliche. Wir haben festgestellt, dass die Investition etwa einen Tag oder so und nach "Ingars Anweisungen" (http://ingar.satgnu.net/devenv/mingw32/index.html) Ihnen eine von Grund auf neu funktionierende Windows MinGW-Infrastruktur mit GCC/Gtk usw. zur Verfügung stellt, und dass Sie die vollständige Kontrolle über und wissen, wo alles ist und was alles tut usw.