2017-03-17 6 views
0

Können Sie helfen, dieses Problem zu lösen?Wie baut man GTK + APP für ARM basierend auf Linux-Plattform

ich bin versucht, Cross-kompilieren eine Probe GTK + -Anwendung für Freescale i.MX-6 Arm basierten Prozessor

ich habe meine Toolchain Pfad exportiert

**export PATH=/u02/tools/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin:$PATH** 

und ich versuche zu überqueren -compile die Anwendung durch folgende Sequenz mit

**arm-none-linux-gnueabi-gcc gtk-frameless.c -o frameless `pkg-config --cflags=-I/U02/tools/DOP/imx6/rootfs/usr/include gtk+-2.0` `pkg-config --libs=-L/U02/tools/DOP/imx6/rootfs/usr/lib/ -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype`** 

und ich bin mit dem folgenden Fehler stecken

** - lgtk-x11-2.0: unbekannt Option /tmp/ccn3JmIw.o: In Funktion main': gtk-frameless.c:(.text+0x24): undefined reference to gtk_init‘

gtk-frameless.c :(text + 0x2c): undefined reference to` gtk_window_new. '

gtk-frameless.c :(text + 0x38):. undefined reference to `gtk_widget_show'

gtk-frameless.c :(text + 0x3c.): undefined reference to` gtk_main'

collect2: ld hat 1 Exit-Status zurückgegeben. **

in meinem Fall konnte ich den Pfad der Bibliotheken nicht korrekt angeben ..?

Ist meine Schätzung richtig oder abgesehen davon, dass ich etwas falsch mache, bitte führe mich, damit es kompiliert oder Links von verwandten Dokumenten bereitstellt, so dass ich es selbst ausprobieren kann.

Jede Sache wäre hilfreich.

Thankyou

Antwort

0

Ich glaube, ich war nicht in der Lage richtig den Weg der Bibliotheken zu spezifizieren ..?

Yup. Schau dir genau die Flaggen an, die du passierst. Diese Anrufe nicht wirklich funktionieren (versuchen, sie und die Ergebnisse sehen):

pkg-config --cflags=-I/U02/tools/DOP/imx6/rootfs/usr/include gtk+-2.0 
pkg-config --libs=-L/U02/tools/DOP/imx6/rootfs/usr/lib/ -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype 

Sie haben zwei grundlegende Optionen bekommen: Entweder Sie verwenden pkg-config wie diese

pkg-config --cflags gtk+-2.0 
pkg-config --libs gtk+-2.0 

, die Ihnen die Bibliotheken gibt und Header, die Ihre pkg-config kennt ...

Oder Sie konstruieren die Includes und Linker-Flags von Hand, um auf die Cross-Compile-Zielheader- und Bibliotheksspeicherorte zu verweisen.

Wenn Sie Glück haben, können Sie die Variablen PKG_CONFIG_SYSROOT_DIR und PKG_CONFIG_LIBDIR env verwenden, um die Verwendung von pkg-config auch für das Cross-Compilieren zu ermöglichen (siehe pkg-config-Dokumentation). Einige entwicklungsübergreifende Umgebungen (zB Yocto/OpenEmbedded) werden dies für Sie tun.

+0

wenn ich die pkg-config ausführe --cflags = -I .. und pkg-config --libs = -L .. wie du gesagt hast bekomme ich folgenden Fehler "-lgtk-x11-2.0: unknown option" . – Mounika

+0

Ja, diese Aufrufe machen keinen Sinn: "--cflags" und "--libs" nehmen keine Argumente und "-l" ist überhaupt keine pkg-config-Option. Siehe pkg-config Dokumentation – jku