2010-03-03 12 views
6

Ich installierte wxWidgets-2.8.10 folgende Anweisungen auf dieser Seite: http://wiki.wxwidgets.org/Compiling_and_getting_startedWxWidgets Verknüpfung Problem

Bibliotheken Verzeichnis:

 
[email protected]:/usr/local/lib$ ls | grep wx 
libwx_base-2.8.a 
libwx_base_net-2.8.a 
libwx_base_xml-2.8.a 
libwx_gtk2_adv-2.8.a 
libwx_gtk2_aui-2.8.a 
libwx_gtk2_core-2.8.a 
libwx_gtk2_html-2.8.a 
libwx_gtk2_qa-2.8.a 
libwx_gtk2_richtext-2.8.a 
libwx_gtk2_xrc-2.8.a 
libwxtiff-2.8.a 
wx 

Dann habe ich Datei widgetTest.cpp und füllte es mit diesem Code: http://www.wxwidgets.org/docs/tutorials/hworld.txt

der Versuch, es zu bauen, habe ich eine Menge von Linker-Fehler:

 
[email protected]:~$ cd /home/alex/Tmp 
[email protected]:~/Tmp$ g++ `wx-config --cppflags` `wx-config --libs` widgetTest.cpp 
/tmp/ccnPCAw5.o: In function `wxCreateApp()': 
widgetTest.cpp:(.text+0x2d): undefined reference to `wxAppConsole::CheckBuildOptions(char const*, char const*)' 
/tmp/ccnPCAw5.o: In function `main': 
... 
widgetTest.cpp:(.text._ZN20wxThreadHelperThreadD0Ev[wxThreadHelperThread::~wxThreadHelperThread()]+0x16): undefined reference to `wxThread::~wxThread()' 
collect2: ld returned 1 exit status 

Zusätzliche Informationen:

 
[email protected]:~$ wx-config --cppflags 
-I/usr/local/lib/wx/include/gtk2-ansi-release-static-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ 
[email protected]:~$ wx-config --libs 
-L/usr/local/lib -pthread /usr/local/lib/libwx_gtk2_richtext-2.8.a /usr/local/lib/libwx_gtk2_aui-2.8.a /usr/local/lib/libwx_gtk2_xrc-2.8.a /usr/local/lib/libwx_gtk2_qa-2.8.a /usr/local/lib/libwx_gtk2_html-2.8.a /usr/local/lib/libwx_gtk2_adv-2.8.a /usr/local/lib/libwx_gtk2_core-2.8.a /usr/local/lib/libwx_base_xml-2.8.a /usr/local/lib/libwx_base_net-2.8.a /usr/local/lib/libwx_base-2.8.a -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lgio-2.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lXinerama -lSM -lpng -ljpeg -lexpat -lwxtiff-2.8 -lz -ldl -lm 
[email protected]:~$ 

Was ist falsch?

+0

g ++ 'wx-config --cppflags' widgetTest.cpp' wx-config --libs' Es hat funktioniert! Wie kann ich diese Lösung auf meine Arbeitsumgebung anwenden - Eclipse CDT. Ich füge 'wx-config --cppflags' den GCC-Compiler-Einstellungen und 'wx-config --libs' den Linker-Einstellungen hinzu und erhalte Linker-Fehler. –

Antwort

9

Hilft das?

g++ `wx-config --cppflags` widgetTest.cpp `wx-config --libs` 

Manchmal setzen die Bibliotheken nach den Quellen erforderlich ist.

+0

Ja, es ist immer erforderlich, wenn Sie statische Verknüpfungen verwenden (wie es das OP tut). Als direkte Konsequenz des Suchalgorithmus der traditionellen Unix-Linker ist es weder für WxWidgets noch für Linux spezifisch. –

+0

Das Verschieben der Bibliotheken zum Ende half, die Befehlszeilenerstellung war erfolgreich, danke! Nun kehre ich in meine Arbeitsumgebung zurück: Eclipse CDT. Wie reproduziert man diese Lösung hier? In den Compiler-Einstellungen habe ich andere Flags: 'wx-config --cppflags', in den Linker-Einstellungen habe ich andere Flags 'wx-config --libs'. Erstellen Sie Ergebnisse Linker-Fehler. –

+1

Als Referenz: In Eclipse CDT wird das Problem durch Ändern des Linker-Befehlszeilenmusters gelöst: FLAGS wird an das Ende verschoben. –