Я бы хотел программно получить список общих библиотек, связанных моим двоичным файлом в Linux и Solaris.Сейчас я выкладываю в pmap (я не могу использовать ldd
в двоичном файле, потому что он не включает библиотеки dlopen'd, и я не могу использовать pldd
, потому что это только Solaris):
std::ostringstream cmd;
cmd << "/usr/bin/pmap " << getpid() << " | awk '{ print $NF }' | grep '\\.so' | sort -u";
FILE* p = popen(cmd.str().c_str(), "r");
Это немного странно, но работает как в Solaris, так и в Linux (вывод pmap немного отличается, но нужная информация всегда находится в последнем столбце).Есть ли способ получить ту же информацию без обстрела?Это работает на обеих платформах?Я предполагаю, что файлы /proc/$PID
по-разному форматируются между ними, но я не знаю, где обычно располагаются заголовки, помогающие разобрать их (если вообще есть общее расположение?).