当我 LDD 我的程序时,我得到了这条线
libQtCore.so.4 => /Soft/fox_dev/Qt-4.7.4/lib/libQtCore.so.4
但是这条路径既不在我的 PATH 中也不在我的 LD_LIBRARY_PATH 中并且正在执行:
set | grep -i qt
我发现“bin”存储库只在我的路径中
/Soft/fox_dev/Qt-4.7.4/bin/
但是没有为 QtCore 库的路径设置任何环境变量。
问题:“ldd”命令如何找到这个路径? (程序也执行得很好)
最佳答案
ldd 实际上使用负载跟踪执行您的程序。加载程序(ld.so 或 ld-linux.so)使用在目录中安装一个或多个 .so 文件后运行 ldconfig 创建的缓存。可以查相关资料here . 如果您想使用不同的 Qt 安装,有几种方法可以覆盖它。最简单的,就是设置
export LD_LIBRARY_PATH=<my Qt libs location>:$LD_LIBRARY_PATH
在一个脚本中,然后像这样运行一个 shell
bash --posix # avoid changing the LD_LIBRARY_PATH again by sourcing configuration file
这将仅使用您选择的 Qt 安装来运行您的程序,而不会影响系统中安装的其他程序。 如果您不关心这一点,那么您可以将其添加到您的 shell 配置文件或 bashrc 等中,具体取决于您使用的 shell。
还有一件事:如果您的程序通过链接加载,即 libQtCore.so 或 libQtCore.so.5 等,那么您也需要在“我的 Qt 库位置”中创建这些链接,如果它们不是已经在那里了。
希望这对您有所帮助。
关于c++ - ldd 神奇地找到了一个 libQtCore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21427711/