Я не понимаю почему 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
почему это происходит?
Спасибо,
Во второй раз ldd находит разделяемую библиотеку и кэширует информацию, чтобы не искать ее.
Однако в вашей первой ситуации он не может найти общую библиотеку, поэтому ему нечего кэшировать. И поэтому, когда он находит другую ссылку на то, что вы знаете, должна быть та же общая библиотека, все, что он знает, — это то, что он не нашел ее, поэтому он ищет ее. Затем печатает ошибку 2 раза.
Других решений пока нет …