gpt4 book ai didi

c++ - dpkg-shlibdeps : error: no dependecy information found

转载 作者:搜寻专家 更新时间:2023-10-31 00:13:21 24 4
gpt4 key购买 nike

我正在尝试使用 dpkg-buildpackage 创建我的 Qt 应用程序的 .deb 包。我编译了第三方 (snmp) 以在我的应用程序中使用。它运行成功。但是在生成 .deb 应用程序时出现错误:

dpkg-shlibdeps: 错误: 没有找到/usr/local/lib/libnetsnmp.so.30 的依赖信息

我一直在这个链接中寻找解决方案:

dpkg-shlibdeps: error: no dependency information found for

其他页面也有,但是没找到解决办法。

我尝试编辑/etc/ld.so.conf 以添加 libnetsnmp.so.30 路径,但没有成功。

我刚刚在运行命令时意识到:

ldconfig -p | grep libnetsnmp.so.30

我在 ldconfig 中有两个 libnetsnmp.so.30 库,而且它们彼此不同。

libnetsnmp.so.30 (libc6,x86-64) => /usr/local/lib/libnetsnmp.so.30
libnetsnmp.so.30 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnetsnmp.so.30

我也试过只提供其中一个。但它没有用。

有没有办法生成带或不带这个库的 .deb 包?

观察:我不打算将 /usr/bin/dpkg-shlibdeps 编辑为 $ignore_missing_info = 1 作为解决方法。

谢谢

最佳答案

dpkg-shlibdeps 是一个旨在通过动态链接找出新包所依赖的所有包的工具。它通过检查所有新二进制文件以查看它们链接到哪些库以及使用了这些库中的哪些符号来实现此目的,然后检查 dpkg 数据库以查看哪些包拥有这些库并找到提供所需的最低包版本必要的符号。

在您的情况下,它会看到您的应用程序链接到那个 libnetsnmp.so.30,因此它会检查哪个包拥有该库。糟糕,没有包裹。这就是错误的来源——也许您已经知道所有这些,但我想我会把它包含在上下文中。

现在,正确的解决方案取决于您希望如何处理自定义编译的 snmp 库。基本上选择是 (a) 将您的自定义 libnetsnmp 与您的包一起运送,(b) 单独打包您的自定义 libnetsnmp,或 (c) 根本不使用自定义 libnetsnmp;使用操作系统提供的任何 libsnmp* 包。

(a):要将 libnetsnmp 与您的包一起发送,您需要小心确保它不提供与标准 libsnmp 包相同的 SONAME,因此它们不会干扰彼此。最简单的方法可能就是静态链接它(链接到 .a.o 文件而不是 .so动态库)。如果您的软件包适用于 Debian 或 Ubuntu 本身,这可能会让人不悦,但如果您证明选择 (b) 和 (c) 对您不可行,那可能没问题。

(b):正确打包库是一个相当深入的话题; StackOverflow 的答案太多了。但是文档在那里。根据您的 libnetsnmp 从上游版本更改了多少,您可能想要更改库的名称(和 SONAME)以避免任何混淆。如果您的 libnetsnmp 只是 Debian sid 或 Ubuntu 中较新的 libsnmp 软件包的反向移植,那么正确的做法可能是在您的 PPA 中发送“官方”libsnmp30 deb 的拷贝或安排 libsnmp30 将在 -backports 存储库中发布。然后你只需要在 libsnmp-dev (>= whatever) 上添加一个 Build-Depends: 到你的包,并根据它构建(而不是手动安装.so 文件在 /usr/local).

(c):如果您实际上不需要对 snmp 进行自定义编译,并且您的操作系统/发行版中可用的版本足够好,那么只需 Build-Depends: 就可以了, 并删除/usr/local中手动安装的.so文件。

关于c++ - dpkg-shlibdeps : error: no dependecy information found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233995/

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