Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[wxWidgets] Linker-Fehler

1 view
Skip to first unread message

Tobias Kretschmer

unread,
Sep 4, 2009, 9:15:11 AM9/4/09
to
Und zwar ich jetzt folgendes Problem:

/usr/bin/gcc -g -Wextra -Wall -Wno-long-long -fno-strict-aliasing -pedantic-errors -std=c++98 -static -o ./commeter_ec /home/ubuntu/Projekt/SNAPSHOTS/Test_040909/cm_rect.o /home/ubuntu/Projekt/SNAPSHOTS/Test_040909/commeter_ec.o -L/usr/X11R6/lib -L/usr/lib -L/home/ubuntu/ICE_lib/lib/some_machine -lX11 -ljpeg -lm -lrt -lice -lfftw3 `wx-config --libs` -I/home/ubuntu/ICE_lib/src `wx-config --cxxflags`
/usr/bin/ld: cannot find -lwx_gtk2u_richtext-2.8
collect2: ld gab 1 als Ende-Status zur�ck
make: *** [commeter_ec] Fehler 1

Die Library ist allerdings da wo sie sein soll, n�mlich in /usr/lib
Hat jemand ne Idee was da falsch l�uft und wie das Makefile aussehen
m�sste, wenn es funktionieren soll?


MfG
Tobias Kretschmer

Jan Seiffert

unread,
Sep 4, 2009, 1:27:24 PM9/4/09
to
Tobias Kretschmer wrote:
> Und zwar ich jetzt folgendes Problem:
>
> /usr/bin/gcc -g -Wextra -Wall -Wno-long-long -fno-strict-aliasing -pedantic-errors -std=c++98 -static
-------------------------------------------------------------------------------------------------^^^^^^

> -o ./commeter_ec /home/ubuntu/Projekt/SNAPSHOTS/Test_040909/cm_rect.o /home/ubuntu/Projekt/SNAPSHOTS/Test_040909/commeter_ec.o -L/usr/X11R6/lib -L/usr/lib -L/home/ubuntu/ICE_lib/lib/some_machine -lX11 -ljpeg -lm -lrt -lice -lfftw3 `wx-config --libs` -I/home/ubuntu/ICE_lib/src `wx-config --cxxflags`
> /usr/bin/ld: cannot find -lwx_gtk2u_richtext-2.8

> collect2: ld gab 1 als Ende-Status zurück


> make: *** [commeter_ec] Fehler 1
>

> Die Library ist allerdings da wo sie sein soll, nämlich in /usr/lib
> Hat jemand ne Idee was da falsch läuft

Es genau die eine nicht als statische lib gibt?
Zeig mal ein ls /usr/lib/libwx_gtk2*

> und wie das Makefile aussehen müsste, wenn es funktionieren soll?
>

Lass das static weg, warum benutzt du es ueberhaupt?
Weil deine ICE-libs irgendwo in home rumgeistern?

Du weisst, das man static an und wieder aus machen kann?

-lX11 -ljpeg -lm -lrt -lfftw3 `wx-config...` -static -lice -shared

>
> MfG
> Tobias Kretschmer
Gruss
Jan

--
Fachbegriffe der Informatik:
44: Verdeckter Fehler
Siemens hat mitentwickelt. (Jörg Pechau)

Tobias Kretschmer

unread,
Sep 7, 2009, 6:01:30 AM9/7/09
to
Jan Seiffert wrote:

> Tobias Kretschmer wrote:
>> Und zwar ich jetzt folgendes Problem:
>>
>> /usr/bin/gcc -g -Wextra -Wall -Wno-long-long -fno-strict-aliasing -pedantic-errors -std=c++98 -static
> -------------------------------------------------------------------------------------------------^^^^^^
>
>> -o ./commeter_ec /home/ubuntu/Projekt/SNAPSHOTS/Test_040909/cm_rect.o /home/ubuntu/Projekt/SNAPSHOTS/Test_040909/commeter_ec.o -L/usr/X11R6/lib -L/usr/lib -L/home/ubuntu/ICE_lib/lib/some_machine -lX11 -ljpeg -lm -lrt -lice -lfftw3 `wx-config --libs` -I/home/ubuntu/ICE_lib/src `wx-config --cxxflags`
>> /usr/bin/ld: cannot find -lwx_gtk2u_richtext-2.8

>> collect2: ld gab 1 als Ende-Status zur�ck


>> make: *** [commeter_ec] Fehler 1
>>

>> Die Library ist allerdings da wo sie sein soll, n�mlich in /usr/lib
>> Hat jemand ne Idee was da falsch l�uft


>
> Es genau die eine nicht als statische lib gibt?
> Zeig mal ein ls /usr/lib/libwx_gtk2*
>

Die Libs gibt es allerdings siehe ls /usr/lib/libwx_gtk2* :

ls /usr/lib/libwx_gtk2*
/usr/lib/libwx_gtk2u_adv-2.8.so /usr/lib/libwx_gtk2u_gizmos_xrc-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_plot-2.8.so.0
/usr/lib/libwx_gtk2u_adv-2.8.so.0 /usr/lib/libwx_gtk2u_gl-2.8.so /usr/lib/libwx_gtk2u_plot-2.8.so.0.6.0
/usr/lib/libwx_gtk2u_adv-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_gl-2.8.so.0 /usr/lib/libwx_gtk2u_qa-2.8.so
/usr/lib/libwx_gtk2u_aui-2.8.so /usr/lib/libwx_gtk2u_gl-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_qa-2.8.so.0
/usr/lib/libwx_gtk2u_aui-2.8.so.0 /usr/lib/libwx_gtk2u_html-2.8.so /usr/lib/libwx_gtk2u_qa-2.8.so.0.6.0
/usr/lib/libwx_gtk2u_aui-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_html-2.8.so.0 /usr/lib/libwx_gtk2u_richtext-2.8.so
/usr/lib/libwx_gtk2u_core-2.8.so /usr/lib/libwx_gtk2u_html-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_richtext-2.8.so.0
/usr/lib/libwx_gtk2u_core-2.8.so.0 /usr/lib/libwx_gtk2u_media-2.8.so /usr/lib/libwx_gtk2u_richtext-2.8.so.0.6.0
/usr/lib/libwx_gtk2u_core-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_media-2.8.so.0 /usr/lib/libwx_gtk2u_stc-2.8.so
/usr/lib/libwx_gtk2u_fl-2.8.so /usr/lib/libwx_gtk2u_media-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_stc-2.8.so.0
/usr/lib/libwx_gtk2u_fl-2.8.so.0 /usr/lib/libwx_gtk2u_mmedia-2.8.so /usr/lib/libwx_gtk2u_stc-2.8.so.0.6.0
/usr/lib/libwx_gtk2u_fl-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_mmedia-2.8.so.0 /usr/lib/libwx_gtk2u_svg-2.8.so
/usr/lib/libwx_gtk2u_gizmos-2.8.so /usr/lib/libwx_gtk2u_mmedia-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_svg-2.8.so.0
/usr/lib/libwx_gtk2u_gizmos-2.8.so.0 /usr/lib/libwx_gtk2u_ogl-2.8.so /usr/lib/libwx_gtk2u_svg-2.8.so.0.6.0
/usr/lib/libwx_gtk2u_gizmos-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_ogl-2.8.so.0 /usr/lib/libwx_gtk2u_xrc-2.8.so
/usr/lib/libwx_gtk2u_gizmos_xrc-2.8.so /usr/lib/libwx_gtk2u_ogl-2.8.so.0.6.0 /usr/lib/libwx_gtk2u_xrc-2.8.so.0
/usr/lib/libwx_gtk2u_gizmos_xrc-2.8.so.0
/usr/lib/libwx_gtk2u_plot-2.8.so
/usr/lib/libwx_gtk2u_xrc-2.8.so.0.6.0


>> und wie das Makefile aussehen m�sste, wenn es funktionieren soll?


>>
>
> Lass das static weg, warum benutzt du es ueberhaupt?
> Weil deine ICE-libs irgendwo in home rumgeistern?
>

Das static bewirkt, da� der Linker keine "undefined refference to ..."
meldet. Mit anderen Worten: Die Libs sind zum Teil statisch
(*.a-Files) somit brauch ich das meiner Meinung nach wirklich.

> Du weisst, das man static an und wieder aus machen kann?
>
> -lX11 -ljpeg -lm -lrt -lfftw3 `wx-config...` -static -lice -shared
>

�h... Nein... Wei� ich irgendwie noch nicht... W�re nett du mir mal ein
bisschen auf die Spr�nge helfen k�nntest... :)

>>
>> MfG
>> Tobias Kretschmer
> Gruss
> Jan
>

Gru�
Tobias

Rainer Weikusat

unread,
Sep 7, 2009, 6:31:15 AM9/7/09
to

Diese Liste enthaelt keine Bibliothek, mit der man etwas 'statisch'
linken koennte.

Jan Seiffert

unread,
Sep 7, 2009, 4:30:06 PM9/7/09
to
Tobias Kretschmer wrote:
> Jan Seiffert wrote:
>
[snip]
>>> Die Library ist allerdings da wo sie sein soll, nämlich in /usr/lib
>>> Hat jemand ne Idee was da falsch läuft

>> Es genau die eine nicht als statische lib gibt?
>> Zeig mal ein ls /usr/lib/libwx_gtk2*
>>
>
> Die Libs gibt es allerdings siehe ls /usr/lib/libwx_gtk2* :
>
> ls /usr/lib/libwx_gtk2*
[snip - Ausgabe von ls]
Wie Rainer schon sagte, diese eine Bibliothek gibt es nicht in einer statischen
Version auf deinem Rechner.
Darum kann der GCC nicht linken wenn du im sagst: "-static"

>
>>> und wie das Makefile aussehen müsste, wenn es funktionieren soll?


>>>
>> Lass das static weg, warum benutzt du es ueberhaupt?
>> Weil deine ICE-libs irgendwo in home rumgeistern?
>>
>

> Das static bewirkt, daß der Linker keine "undefined refference to ..."


> meldet. Mit anderen Worten: Die Libs sind zum Teil statisch
> (*.a-Files) somit brauch ich das meiner Meinung nach wirklich.
>

Also irgendeine Bibliothek in der Liste ist NUR statisch vorhanden und andere
(hier das wxWidgets GTK backend) sind NUR dynamisch vorhanden.

Dann pack ein -static/-shared paar nur um die Lib die es nur statisch auf deinem
System gibt.

>> Du weisst, das man static an und wieder aus machen kann?
>>
>> -lX11 -ljpeg -lm -lrt -lfftw3 `wx-config...` -static -lice -shared
>>
>

> Äh... Nein... Weiß ich irgendwie noch nicht... Wäre nett du mir mal ein
> bisschen auf die Sprünge helfen könntest... :)
>

Wie schon mal erwaehnt ist die Reihenfolge der Linkzeile ist nicht unerheblich.
Es wird von links nach rechts gearbeitet.
-static ist dabei kein "globaler" ja/nein Schalter, sondern wird an der stelle
wo es steht "aktiv" und gilt fuer den rest der Zeile (auch fuer Sachen die der
Compiler hinten noch anfuegt, wie libc usw, was man eigentlich nicht statisch
linken will). Es sei denn, man schalted "weiter hinten" wieder zurueck mit -shared.
So wie in der Beispielzeile die ich gegeben hatte, oder noch mal einfacher:

-la -static -lb -shared -lc

Die Bibliothek a wird normal gelinkt (was das auch immer auf deinem System sein
mag), Bibliothek b wird statisch gelinkt, danach wird wieder auf shared linking
umgestellt, so das Bibiothek c (und was weiter hinten noch kommt) dynamisch
gelinkt wird.

(Bei all dem muss man natuerlich weiter auf die Reihenfolge der Libs achten...)

[snip]
>
> Gruß
> Tobias
Gruss
Jan

--
Fachbegriffe der Informatik:
171: PMPO
Leistungsabgabe bei spontaner Verbrennung (Arndt Spelten)

Tobias Kretschmer

unread,
Sep 8, 2009, 7:16:07 AM9/8/09
to
Jan Seiffert wrote:

> Tobias Kretschmer wrote:
>> Jan Seiffert wrote:
>>
> [snip]

>>>> Die Library ist allerdings da wo sie sein soll, n�mlich in /usr/lib
>>>> Hat jemand ne Idee was da falsch l�uft


>>> Es genau die eine nicht als statische lib gibt?
>>> Zeig mal ein ls /usr/lib/libwx_gtk2*
>>>
>>
>> Die Libs gibt es allerdings siehe ls /usr/lib/libwx_gtk2* :
>>
>> ls /usr/lib/libwx_gtk2*
> [snip - Ausgabe von ls]
> Wie Rainer schon sagte, diese eine Bibliothek gibt es nicht in einer statischen
> Version auf deinem Rechner.
> Darum kann der GCC nicht linken wenn du im sagst: "-static"
>
>>

>>>> und wie das Makefile aussehen m�sste, wenn es funktionieren soll?


>>>>
>>> Lass das static weg, warum benutzt du es ueberhaupt?
>>> Weil deine ICE-libs irgendwo in home rumgeistern?
>>>
>>

>> Das static bewirkt, da� der Linker keine "undefined refference to ..."


>> meldet. Mit anderen Worten: Die Libs sind zum Teil statisch
>> (*.a-Files) somit brauch ich das meiner Meinung nach wirklich.
>>
>
> Also irgendeine Bibliothek in der Liste ist NUR statisch vorhanden und andere
> (hier das wxWidgets GTK backend) sind NUR dynamisch vorhanden.
>
> Dann pack ein -static/-shared paar nur um die Lib die es nur statisch auf deinem
> System gibt.
>
>>> Du weisst, das man static an und wieder aus machen kann?
>>>
>>> -lX11 -ljpeg -lm -lrt -lfftw3 `wx-config...` -static -lice -shared
>>>
>>

>> �h... Nein... Wei� ich irgendwie noch nicht... W�re nett du mir mal ein

>> bisschen auf die Spr�nge helfen k�nntest... :)


>>
>
> Wie schon mal erwaehnt ist die Reihenfolge der Linkzeile ist nicht unerheblich.
> Es wird von links nach rechts gearbeitet.
> -static ist dabei kein "globaler" ja/nein Schalter, sondern wird an der stelle
> wo es steht "aktiv" und gilt fuer den rest der Zeile (auch fuer Sachen die der
> Compiler hinten noch anfuegt, wie libc usw, was man eigentlich nicht statisch
> linken will). Es sei denn, man schalted "weiter hinten" wieder zurueck mit -shared.
> So wie in der Beispielzeile die ich gegeben hatte, oder noch mal einfacher:
>
> -la -static -lb -shared -lc
>
> Die Bibliothek a wird normal gelinkt (was das auch immer auf deinem System sein
> mag), Bibliothek b wird statisch gelinkt, danach wird wieder auf shared linking
> umgestellt, so das Bibiothek c (und was weiter hinten noch kommt) dynamisch
> gelinkt wird.
>
> (Bei all dem muss man natuerlich weiter auf die Reihenfolge der Libs achten...)
>
> [snip]

Juhu... Es funktioniert. :) Es war wohl der Mix aus statischen und
dynamischen Libs... Vielen Dank f�r deine Hilfe.

Gru�
Tobias

>>
>> Gru�
>> Tobias
> Gruss
> Jan
>

0 new messages