ldd show дублированная общая библиотека

Я не понимаю почему ldd показывает мне одну и ту же разделяемую библиотеку более одного раза, когда она не может найти зависимость.
В небольшом исполняемом файле, который использует boost, вывод:

libboost_chrono.so.1.49.0 => not found
libboost_system.so.1.49.0 => not found
libboost_system.so.1.49.0 => not found
libboost_program_options.so.1.49.0 => not found
libboost_regex.so.1.49.0 => not found

в противном случае после установки правильных зависимостей ldd показывает только одно:

libboost_system.so.1.49.0 => /usr/lib/libboost_system.so.1.49.0
libboost_regex.so.1.49.0 => /usr/lib/libboost_regex.so.1.49.0
libboost_program_options.so.1.49.0 => /usr/lib/libboost_program_options.so.1.49.0
libboost_chrono.so.1.49.0 => /usr/lib/libboost_chrono.so.1.49.0

почему это происходит?

Спасибо,

3

Решение

Во второй раз ldd находит разделяемую библиотеку и кэширует информацию, чтобы не искать ее.

Однако в вашей первой ситуации он не может найти общую библиотеку, поэтому ему нечего кэшировать. И поэтому, когда он находит другую ссылку на то, что вы знаете, должна быть та же общая библиотека, все, что он знает, — это то, что он не нашел ее, поэтому он ищет ее. Затем печатает ошибку 2 раза.

3

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

Других решений пока нет …

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