PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Statisch ? bzw. ohne Lib



dakjo
01-03-2003, 17:45
Tach Folks,

ich hab folgendes Problem, ich hab ein kleines Progie mit der wxWindows Lib geschrieben.

Jetzt will ich aber, das ich den leuten nur die Ausführbare Datei geben muss und es läuft. Nicht, aber das Sie die wxWindows lib installieren müssen.

Geht das mit kompieler Opt ????

Kleine angaben vielleicht noch :

gcc 3.2 gentoo
wxWindows 2.4.0
Sonst nix :

PS: Kompiele ich das Proggie unter Windows kann ich es auf anderen Windows PC´s ausführen ohne die Wxlib installiert zu haben.

Danke im foraus

anda_skoa
01-03-2003, 18:57
Du brauchst die statische Version der Lib und -static davor im Linkerkommando.

Also wenn die wxWindows Lib libwxwindows.a heißt

#> g++ -o program -static -lwxwindows -dynamic $(ANDERE_LIBS) $(OBJECTFILES)

Linkt mit wxwindows statisch, mit den restlichen Libs dynamisch.
Die "Variablen" musst du durch deine Angaben ersetzen, oder die Variablen im Makefile setzen.

Allerdings ist das Benutzen von statischem Linken immer fraglich.

Ciao,
_

dakjo
01-03-2003, 19:21
Warum ist das fraglich ?

anda_skoa
01-03-2003, 19:35
Original geschrieben von dakjo
Warum ist das fraglich ?

Die üblichen Sachen halt:

Programm wird größer -> Laden dauert länger
Kein In-Memory Codesharing mit anderen Programmen, die ansich die selbe Lib verwenden -> Speicherverschwendung, vorallem wenn das mehrere machen oder das Programm mehrmals gestartet wird.

Bugfixes und Verbesserungen in der Lib werden nicht automatisch für das statisch gelinkte Programm verfügbar.
Im Falle eines Security Fixes muss das Programm neu ausgelieftert werden.

Ciao,
_

dakjo
01-03-2003, 19:54
Ich habs gerade ausprobiert meine Zeile

g++ -Wall -static -llibwx_gtk-2.4 `wx-config --static` `wx-config --libs` `wx-config --cxxflags` server_wx -o server_wx

Jetzt bekomm ich die Fehlermeldung

/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -llibwx_gtk-2.4
collect2: ld returned 1 exit status

mach ich aber locate libwx_gtk-2.4 dann find ich sie unter

/usr/lib/libwx_gtk-2.4.so
/usr/lib/libwx_gtk-2.4.so.0
/usr/lib/libwx_gtk-2.4.so.0.0.0
:confused:

anda_skoa
01-03-2003, 20:18
du hast lib bei -l dazu geschrieben.
Es gibt keine liblibwx_gtk-2.4

Ciao,
_