gpt4 book ai didi

linux - uic 找不到共享库

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:12 27 4
gpt4 key购买 nike

我正在尝试使 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 是如何寻找共享库的?我需要设置任何环境变量来修复它吗?

最佳答案

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

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

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$HOME/foo

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

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

#!/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 文件的二进制文件相同的目录中查找,从而允许它运行。

关于linux - uic 找不到共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com