Esiste un modo semplice ed efficace per sapere che una data in modo dinamico legato ELF
manca una richiesta .so per l'esecuzione, tutti dalla all'interno di un Programma C/C++?linux/gcc: funzionalità ldd dall'interno di un C/programma C++
Ho bisogno di un programma con funzionalità un po 'simili a ldd
, senza tentare di eseguire il ELF
per scoprire le dipendenze (met/unmet) nel sistema. Forse chiedendo l'utilità ld-linux.so tramite qualche libreria? (Io sono un novizio in questa parte del linux =)
NOTA: la lettura del codice sorgente di
ldd
non era molto disponibile per le mie intenzioni: sembra cheldd
è infatti sborsare un altro processo e l'esecuzione del programma.
Se non è possibile sapere che un programma ha dipendenze non soddisfatte senza eseguirlo, c'è qualche modo per, almeno, in modo rapido elencare il .so del necessario per che ELF
tutto da dentro il mio programma?
Grazie in anticipo =)
Hai una buona ragione perché non basta richiamare l'utilità ldd e analizzare il suo output? Sotto Linux, tale tecnica è ampiamente utilizzata. – Juraj
Preferirei non chiamare la shell per eseguire nient'altro che il mio programma .. inoltre, non è molto efficace per fork, avviare una shell, ecc solo per provare se un eseguibile verrà eseguito per tentativi ed errori .. ma sì , Sospetto che invocare ldd sia una buona scelta standard. – conejoroy
Siamo spiacenti, questo è un mito. Fork non è affatto costoso al giorno d'oggi e la maggior parte delle chiamate exec *() non usa shell per eseguire un binario. È facilmente possibile che ucciderai più tempo immergendoti negli interni di ld-linux rispetto al sovraccarico di fork()/exec() per tutte le future chiamate insieme. – Juraj