linken gegen bestimmte libs

Hela Wann

Grünschnabel
Hallo.

Ich habe das Problem, dass ich ein Programm auf einem Rechner schreiben und kompilieren muss, das auf einem anderen Rechner laufen muss. Auf dem zweiten, dem Zielsystem, ist kein Kompiler drauf und kann da auch keinen installieren.

Hier nun die eigentliche Frage:
Die Systeme haben nicht die selben libs (glibc z. B.) installiert. Ich kann allerdings doch bestimmt die vom Zielsystem auf das Entwicklungssystem rüberkopieren und dem Kompiler und Linker sagen: benutze diese in /usr/zielsystem z. B.

Wie kann ich das dem Kompiler sagen? Ich benutze als IDE kdevelop.

Vielen Dank!

Hela
 
Hallo,

wenn du mit libs dll Dateien meinst dann ist es ohne Probleme möglich diese zu kopieren.
Problematisch würde es nur werden, wenn sie für verschiedene Bestriebssysteme sind.
Bei dll Dateien gibt es 3 möglichkeiten der Platzierung in Ordnern ( bei Windows )

1. Im gleichen Ordner wie die .exe Datei
2. Im System Ordner
3. Die dll Datei als Plugin verwenden, dann ist der Pfad beliebig festlegbar
 
Hi,

ich glaube du meinst eher unter Linux oder ?

Also dort sollte es gehen wenn du g++ -o main.cpp deinelib.lib testproggi sagst.
Dann sollte der Compiler das verstehen und die LIB mit in dein testproggi linken. Sollte das nicht klappen-> melden
 
Nein das geht so nicht mit dem GCC.
Linken tut man wenn dann so:
gcc -L/PFAD_ZUR_LIB -lLIBNAME
Wenn eine Lib libmine.lib heißt, dann wird mit -lmine gelinkt.

Zum eigentlichen Problem:
Das ganze müsste auch gehen, wenn du die libc statisch mit einlinkst.
Also
gcc -L/usr/lib -lc

Daniel
 
Daniel Toplak hat gesagt.:
Nein das geht so nicht mit dem GCC.
Linken tut man wenn dann so:
gcc -L/PFAD_ZUR_LIB -lLIBNAME
Wenn eine Lib libmine.lib heißt, dann wird mit -lmine gelinkt.

Zum eigentlichen Problem:
Das ganze müsste auch gehen, wenn du die libc statisch mit einlinkst.
Also
gcc -L/usr/lib -lc

Daniel

Also, im Prinzip funktioniert es so, nur muss ich jetzt, wo das Programm auf dem Entwiklungssystem läuft alle Libs von dort wieder mit herüber nehmen auf das Echtsystem, was ich mir gerne ersparen würde, falls dort Versionskonflikte sind. Dafür würde ich gerne alles statisch linken, was allerdings mit der libmysqlclient nicht geht, die aber ja auf dem Echtsystrem auch vorhanden ist, also kein Problem. Jetzt geht das mit dem Statischen Linken allerdings nicht, da die libmysqlclient mit benutzt wird. grrr. Was tu ihc denn jetzt?

Hela
 
Zurück