Запустите ldd для двоичного файла с параметром

я знаю ldd может взять только двоичный файл в качестве параметра, что я спрашиваю здесь, как запустить ldd с бинарным, скажем, mybin, с параметром бинарного. Например, mybin --myparam ./configfile.conf,

Линкер будет отличаться, если я добавлю файл conf для своего двоичного файла, потому что он загружает некоторые плагины во время выполнения с общими объектными файлами плагинов, plugin1.so что-то вроде этого. У меня есть неопределенная проблема с ссылками, но я до сих пор не знаю, какая .so Файл, который я пропал.

Если я бегу ldd ./mybinвсе, что связано и запустить простой двоичный файл в порядке. Как только я добавлю файл conf для своего бинарного файла, чтобы позволить ему загрузить некоторые разделяемые библиотеки плагинов, мой двоичный файл сообщит об ошибках при загрузке этих библиотек (закодированное исключение, с некоторыми undefined reference Сообщения об ошибках).

Так что, если есть способ запустить ldd с mybin --myparam ./a.file что-то вроде этого очень поможет.

3

Решение

Использовать LD_DEBUG переменная окружения для этого. Чтобы увидеть соответствующие параметры, выполните любую команду с LD_DEBUG=help, Например, бег LD_DEBUG=help ls на моей машине выдает такой вывод:

LD_DEBUG=help ls
Valid options for the LD_DEBUG environment variable are:

libs        display library search paths
reloc       display relocation processing
files       display progress for input file
symbols     display symbol table processing
bindings    display information about symbol binding
versions    display version dependencies
scopes      display scope information
all         all previous options combined
statistics  display relocation statistics
unused      determined unused DSOs
help        display this help message and exit

To direct the debugging output into a file instead of standard output
a filename can be specified using the LD_DEBUG_OUTPUT environment variable.

Один из способов отладки вашего dlopens, или любой другой механизм поздней загрузки, который вы используете, будет запускать ваши исполняемые файлы с соответствующими аргументами с LD_DEBUG=all, Это даст вам длинный вывод, детализирующий поиск символов и пути поиска. Этот вывод также расскажет вам о сбоях разрешения.

2

Другие решения


По вопросам рекламы [email protected]