Linux uic can';找不到共享库

Linux uic can';找不到共享库,linux,qt5,Linux,Qt5,我正试图将Qt5作为源代码树的一部分,所以我还没有在我的机器上安装它,只是从源代码管理中复制了它。我尝试运行uic.exe时遇到问题: stiopa@stiopa-VirtualBox:~/ct/LinuxLibs/Qt/bin > ./uic ./uic: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or direc

我正试图将Qt5作为源代码树的一部分,所以我还没有在我的机器上安装它,只是从源代码管理中复制了它。我尝试运行uic.exe时遇到问题:

    stiopa@stiopa-VirtualBox:~/ct/LinuxLibs/Qt/bin > ./uic

    ./uic: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

即使将libQt5Core库复制到bin目录,我仍然会收到相同的错误。uic如何寻找共享库?是否需要设置任何环境变量来修复它

这是另一种不将依赖共享库放在程序支持的定义位置的情况

如果您计划执行“将文件复制到与可执行文件相同的目录”,快速解决方案是引用库加载路径中的目录;e、 g.如果二进制文件位于
$HOME/foo
中,则执行以下操作:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$HOME/foo
这将添加或使
$HOME/foo
成为运行时链接器的加载路径。因此,您运行的任何程序都将在此目录中查找库,以及操作系统的默认设置(由
ld.so
配置定义),以及应用程序本身中定义的路径(
rpath

如果要遵循此路线,可以将二进制文件移动到target.bin,创建一个target bash脚本,自动调用bin文件;e、 g

#!/bin/bash -p
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$(dirname $0)
exec $0.bin "$*"
二级机制,允许您更改二进制文件的搜索位置;在不需要环境变量insert的情况下,可以修改二进制文件,使其在不同的位置进行搜索;这利用了运行时链接器(查找库)中的一些功能

有一个名为的程序,可以由各种包管理器添加,它允许您直接编辑rpath。在这种情况下;您可以使用以下命令更改二进制文件的附加搜索路径:

chrpath -r '$ORIGIN' foo

这意味着程序将在与二进制文件相同的目录中查找
。因此
文件,从而允许它运行。

您可以使用
导出LD_库路径=$LD_库路径:$HOME/ct/LinuxLibs/Qt/bin
设置二进制文件以搜索当前bin目录中的库-它只影响当前终端。您最好通过软件包管理器正确安装;或者,如果手动编译并将其安装到链接器cacheexport LD_LIBRARY_路径拾取的一个标准位置,则已将其修复。谢谢你,彼得!