nach kompilieren zeigt ldd absolute Pfade zu den Shared Objects an

28/09/2007 - 22:13 von Patrick Klaus | Report spam
Hallo Leute,

hab ein Programm, welches diverse Shared Objects im makefile dazugelinkt
bekommt.

Diese Shared Objects, hab im Namen aber keinen Prefix für "lib" also
"MEINLIB1", "MEINLIB2" statt dem Standard "libMEINLIB1", "libMEINLIB2".

gcc bzw. ld gehen scheinbar deswegen hin und linken die Shared Objects
mit absoluten Pfaden in das Objekt, was sehr unschön und unflexibel ist.

ldd scp zeigt ja z.B. folgende Auflösungen richtigerweise an:

ldd /usr/bin/scp
libcrypto.so.0.9.8 => /usr/lib64/libcrypto.so.0.9.8
libutil.so.1 => /lib64/libutil.so.1 (0x00002b098aceb000)
libz.so.1 => /lib64/libz.so.1 (0x00002b098aeee000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b098b104000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002b098b31b000)

[..]

bei meiner Anwendung wird das den etwa beispielweise so aussehen:

ldd /usr/bin/scp
/usr/lib64/libcrypto.so.0.9.8
/lib64/libutil.so.1 (0x00002b098aceb000)
/lib64/libz.so.1 (0x00002b098aeee000)
/lib64/libnsl.so.1 (0x00002b098b104000)
/lib64/libcrypt.so.1 (0x00002b098b31b000)
[..]

nun, komme ich drum herum das ich meine Shared Objects alle umbenenne
indem ich ein "lib" vorne dran setze, oder gibts ne andere Option den
ich dem gcc oder ld mitgeben kann?

Hoffe Ihr versteht meine Frage ;-)

Danke für eure Antworten.

Gruss

Patrick
 

Lesen sie die antworten

#1 Markus Wichmann
16/10/2007 - 13:55 | Warnen spam
Patrick Klaus schrieb:
Hallo Leute,

hab ein Programm, welches diverse Shared Objects im makefile dazugelinkt
bekommt.

Diese Shared Objects, hab im Namen aber keinen Prefix für "lib" also
"MEINLIB1", "MEINLIB2" statt dem Standard "libMEINLIB1", "libMEINLIB2".

gcc bzw. ld gehen scheinbar deswegen hin und linken die Shared Objects
mit absoluten Pfaden in das Objekt, was sehr unschön und unflexibel ist.

ldd scp zeigt ja z.B. folgende Auflösungen richtigerweise an:

ldd /usr/bin/scp
libcrypto.so.0.9.8 => /usr/lib64/libcrypto.so.0.9.8
libutil.so.1 => /lib64/libutil.so.1 (0x00002b098aceb000)
libz.so.1 => /lib64/libz.so.1 (0x00002b098aeee000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b098b104000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002b098b31b000)

[..]

bei meiner Anwendung wird das den etwa beispielweise so aussehen:

ldd /usr/bin/scp
/usr/lib64/libcrypto.so.0.9.8
/lib64/libutil.so.1 (0x00002b098aceb000)
/lib64/libz.so.1 (0x00002b098aeee000)
/lib64/libnsl.so.1 (0x00002b098b104000)
/lib64/libcrypt.so.1 (0x00002b098b31b000)
[..]

nun, komme ich drum herum das ich meine Shared Objects alle umbenenne
indem ich ein "lib" vorne dran setze, oder gibts ne andere Option den
ich dem gcc oder ld mitgeben kann?

Hoffe Ihr versteht meine Frage ;-)




Schon klar. Wie hast du das Programm denn kompiliert? Ich kann hier
nàmlich keine Datei hinbekommen, die so etwas zurückgibt. Vielleicht
solltest du es mit

ld -o scp *.o -L/usr/lib64 -L/lib64 -lcrypto -lutil -lz -lnsl

versuchen. Wenn das nicht klappt:

Liegen die Bibliotheksdateien in Nicht-Standard-Pfaden? Füge die mal an
LD_LIBRARY_PATH oder /etc/ld.so.conf an.

Danke für eure Antworten.




Gern geschehen.

Gruss

Patrick



HTH,
Markus
Was haben eigentlich alle gegen Beamte? Die tun doch nichts!

Ähnliche fragen