Archiv verlassen und diese Seite im Standarddesign anzeigen : LIBRARY herrausfinden
Guten Morgen,
ich möchte bzw muss aus einem Verzeichniss die Abängikeiten von ausführbaren Dateien herausfinden.
So in der Art wie es ldd macht.
Nur habe ich leider überhaubt keine Ahnung wie ich das bewerkstelligen soll.
Über eine Tip wo ich ansetzen könnte würde ich mich freuen.
gruß
central
anda_skoa
04-07-2006, 14:21
Der Titel des Beitrags sagt du willst Libraries herausfinden, der Text sagt etwas über Executables. :confused:
Vielleicht kannst du ein Beispiel angeben?
Ciao,
_
Ok ich versuche das mal genauer zu erklären .
Mein Anliegen ist ein eine initrd zu erstellen.
Wenn ich nun die '/bin/sh' zu meiner initrd kopiere brauch ich natürlcih auch die librarys von denn sie abhängt.
was ldd ja auch shön zeigt.
ldd /bin/sh
libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x00002b6b8322b000)
libdl.so.2 => /lib/libdl.so.2 (0x00002b6b83387000)
libc.so.6 => /lib/libc.so.6 (0x00002b6b8348b000)
/lib64/ld-linux-x86-64.so.2 (0x00002b6b83113000)
Davon brauche ich nur den Pfad inkl library um sie dann in meine initrd zu kopieren.
Ich hatte es erst mit mit execl versucht da ich execlp nicht verwenden möchte bzw kann da das programm root rechte benötigt.
Das sah dann so aus
std::string meinbefehl = "/usr/sbin/ldd /bin/sh >> tempfile";
execl( execl("/bin/sh", "sh","-c", meinbefehl.c_str() ,NULL);
klappte natürlich nicht da cat nicht gefunden wird :(
Nun meine Frage gibt es eine Funktion die mir Abhängkeiten anzeigen kann ?
Oder wie könnte ich das sonst bewerkstelligen ?
gruß
central
Hi,
brauchst du das in einem selber geschriebenen Programm, oder langt dir auch ne Shell Lösung. Die könnte z.B. so aussehen (jetzt halt für den ls Befehl):
ldd /bin/ls | awk -F'=> ' '{print $2}' | sed 's/ (0x.*)//g' | grep -v '^$'
Gruß
almoeli
Dank dir almoeli,
das ist genau das was ich erreichen möchte aber als c/c++ funktion .
Alternativ könnte ich natürlich auch mein Programm als sh skript schreiben dann wäre es sicherlich schon fertig :) .
Ich sehe mein Programm eher so als Übung für mich , und dann kann ich nicht einfach wenn es schwierig wird aufgeben ;)
Also wenn Jemand weiß wie man das machen kann , dann nur raus damit.
gruß
central
Schau dir doch den Quellcode von ldd an.
Hallo Joghurt,
das hab ich natürlich als erstes gemacht aber
ldd ist ein bash skript.
gruß
central
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.