首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uic找不到共享库

uic找不到共享库
EN

Stack Overflow用户
提问于 2014-09-13 20:23:45
回答 1查看 1.7K关注 0票数 1

我正在尝试使Qt5成为我的源码树的一部分,所以我没有在我的机器上安装它,只是从源码控制中复制了它。当我尝试运行uic.exe时遇到了一个问题:

代码语言:javascript
复制
    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如何寻找共享库?有没有需要设置的环境变量来修复它?

EN

回答 1

Stack Overflow用户

发布于 2014-09-15 06:19:00

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

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

代码语言:javascript
复制
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$HOME/foo

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

如果您打算遵循此路线,您可以做的是将二进制文件移动到target.bin,创建一个自动调用bin文件的目标bash脚本;

代码语言:javascript
复制
#!/bin/bash -p
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$(dirname $0)
exec $0.bin "$*"

允许您更改二进制文件的搜索位置的第二种机制是修改二进制文件,使其在与通常不同的位置进行搜索;这利用了运行时链接器(查找库)中的一些功能。

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

代码语言:javascript
复制
chrpath -r '$ORIGIN' foo

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25823193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档