Hi,
ich bin gerade dabei, mich in wxWidgets einzuarbeiten. Wenn ich eine Anwendung kompiliere, geht das recht einfach per
|
Quellcode
|
1
|
$ g++ file.cpp file2.cpp `wx-config --libs --cxxflags` -o file
|
(entspricht: )
|
Quellcode
|
1
2
3
4
|
g++ file.cpp file2.cpp -I/usr/local/lib/wx/include/gtk2-ansi-release-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64
-D_LARGE_FILES -D__WXGTK__ -pthread -L/usr/local/lib -pthread -lwx_gtk2_richtext-2.8 -lwx_gtk2_aui-2.8 -lwx_gtk2_xrc-2.8
-lwx_gtk2_qa-2.8 -lwx_gtk2_html-2.8 -lwx_gtk2_adv-2.8 -lwx_gtk2_core-2.8 -lwx_base_xml-2.8 -lwx_base_net-2.8 -lwx_base-2.8
-o file
|
Jetzt will ich aber, dass der gcc mir nicht automatisch die Eingabedateien linkt, sondern erstmal die Object-Files ausspuckt, was ja bekanntlich mit dem -c Parameter funktioniert. Dann linkt er aber - logischerweise - nicht die libs hinzu. Wie kann ich das anstellen, dass er erst die .o-Dateien generiert und dann das ganze linkt?
Wenn ich versuche, die `wx-config --libs` dem ld als Parameter zu übergeben, kennt er -pthread nicht, das lässt sich aber vermeiden, indem ich -lpthread schreibe. Daraufhin erscheint folgende Fehlermeldung:
|
Quellcode
|
1
2
3
4
|
ld: warning: cannot find entry symbol _start; defaulting to 0000000000409ae8
test.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0xa3): undefined reference to `__dso_handle'
test.cpp:(.text+0xe6): undefined reference to `__dso_handle'
|
MfG errorX
//edit: Gelöst. Ich brauche ld natürlich gar nicht verwenden, über den g++ linkgen geht auch und dann funktionieren die Parameter einwandfrei. Also praktisch so:
|
Quellcode
|
1
2
3
|
$ g++ file.cpp -c `wx-config --cxxflags` -o file.o
$ g++ file2.cpp -c `wx-config --cxxflags` -o file2.o
$ g++ file.o file2.o `wx-config --libs` -o file
|