我正在尝试使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如何寻找共享库?有没有需要设置的环境变量来修复它?
发布于 2014-09-15 06:19:00
这是另一种不将依赖共享库放在程序支持的已定义位置的情况。
如果您计划执行“将文件复制到与可执行文件相同的目录”,则快速的解决方案是引用库加载路径中的目录;例如,如果二进制文件位于$HOME/foo中,则执行以下操作:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$HOME/foo这将添加或使$HOME/foo成为运行时链接器的加载路径。因此,您运行的任何程序都将在此目录中查找库、操作系统的默认设置(由ld.so配置定义)以及在应用程序本身( rpath)中定义的路径。
如果您打算遵循此路线,您可以做的是将二进制文件移动到target.bin,创建一个自动调用bin文件的目标bash脚本;
#!/bin/bash -p
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$(dirname $0)
exec $0.bin "$*"允许您更改二进制文件的搜索位置的第二种机制是修改二进制文件,使其在与通常不同的位置进行搜索;这利用了运行时链接器(查找库)中的一些功能。
有一个名为chrpath的程序,可以由不同的包管理器添加,它允许您直接编辑rpath。在这种情况下,您可以使用以下命令更改二进制文件的附加搜索路径:
chrpath -r '$ORIGIN' foo这意味着程序将在与二进制文件相同的目录中查找.so文件,从而允许其运行。
https://stackoverflow.com/questions/25823193
复制相似问题