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.
Code:
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
Code:
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
Lesezeichen