ldd 显示重复的共享库
ldd show duplicated shared library
我不清楚为什么 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 找到了共享库,并缓存了信息,因此它不需要继续寻找它。
但是在你的第一种情况下,它找不到共享库,所以没有什么可以缓存的。因此,当它找到另一个对你所知道的应该是同一个共享库的引用时,它所知道的只是它没有找到它,所以它会寻找它。然后第二次打印错误。
我不清楚为什么 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 找到了共享库,并缓存了信息,因此它不需要继续寻找它。
但是在你的第一种情况下,它找不到共享库,所以没有什么可以缓存的。因此,当它找到另一个对你所知道的应该是同一个共享库的引用时,它所知道的只是它没有找到它,所以它会寻找它。然后第二次打印错误。