这是 dpkg-shlibdeps 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
dpkg-shlibdeps - 生成共享库 substvar 依赖项
概要
dpkg-shlibdeps [选项...] [-e]可执行 [选项...]
商品描述
dpkg-shlibdeps 计算其命名的可执行文件的共享库依赖关系
论据。 依赖项被添加到替换变量文件中 Debian/substvars
作为变量名 文件库:依赖域 协调 依赖域 是一个依赖字段
姓名。 以开头的任何其他变量 文件库: 从文件中删除。
dpkg-shlibdeps 有两种可能的信息来源来生成依赖信息。
或 符号 文件或 什库 文件。 对于每个二进制文件 dpkg-shlibdeps 分析,它
找出与其链接的库列表。 然后,对于每个库,它看起来
要么 符号 文件,或 什库 文件(如果前者不存在或者如果
debian/shlibs.local 包含相关的依赖项)。 这两个文件都应该是
由库包提供,因此应该作为
/var/lib/dpkg/信息/包.符号 or /var/lib/dpkg/信息/包.什库. 包名
分两步确定:在系统上找到库文件(在同
目录 搜搜 会使用),然后使用 的dpkg -S 库文件 查找包
提供图书馆。
符号 档
符号文件通过提供最少的信息来包含更细粒度的依赖信息
库导出的每个符号的依赖项。 脚本试图找到一个符号
与以下位置的库包关联的文件(使用第一个匹配项):
debian/*/DEBIAN/符号
当前构建过程生成的共享库信息也调用
dpkg-shlibdeps. 它们是由 dpkg-gensymbols dpkg-gensymbols(1). 它们仅在以下情况下使用
该库位于包的构建树中。 该构建树中的符号文件
优先于来自其他二进制包的符号文件。
/etc/dpkg/符号/包.符号。拱
/etc/dpkg/符号/包.符号
每个系统覆盖共享库依赖信息。 拱 是
当前系统的架构(通过 dpkg-架构 -qDEB_HOST_ARCH).
输出来自“dpkg查询 --控制路径 包 符号”
包提供的共享库依赖信息。 除非被覆盖
--管理员目录,这些文件位于 /var/lib/dpkg 中。
在扫描所有二进制文件使用的符号时, dpkg-shlibdeps 记得(最大的)
每个库所需的最小版本。 在进程结束时,它可以写
为每个使用的库找出最小的依赖(前提是库的信息
符号 文件是准确的)。
作为一种安全保护措施,符号文件可以提供 构建依赖包 荟萃
信息领域和 dpkg-shlibdeps 将提取所需的最小版本
对应的包 构建依赖 字段并使用此版本,如果它高于
通过扫描符号计算的最小版本。
什利布斯 档
Shlibs 文件将库直接关联到依赖项(无需查看
符号)。 因此,它通常比真正需要的更坚固,但非常安全且易于处理。
在多个位置查找库的依赖项。 第一个文件提供
使用感兴趣的图书馆的信息:
debian/shlibs.local
包本地覆盖共享库依赖信息。
/etc/dpkg/shlibs.override
每个系统覆盖共享库依赖信息。
debian/*/DEBIAN/shlibs
当前构建过程生成的共享库信息也调用
dpkg-shlibdeps. 只有在包的构建中找到库时才使用它们
树。 该构建树中的 shlibs 文件优先于来自
其他二进制包。
输出来自“dpkg查询 --控制路径 包 混蛋”
包提供的共享库依赖信息。 除非被覆盖
--管理员目录,这些文件位于 /var/lib/dpkg 中。
/etc/dpkg/shlibs.default
每个系统的默认共享库依赖信息。
然后直接使用提取的依赖项(除非它们被过滤掉,因为
它们已被识别为重复,或者比另一个依赖弱)。
配置
dpkg-shlibdeps 将非选项参数解释为可执行名称,就像它们已经被
作为 -e可执行.
-e可执行
包括适用于所需的共享库的依赖项 可执行.
此选项可以多次使用。
-l目录
添加 目录 到搜索私有共享库的目录列表
(自 dpkg 1.17.0 起)。 此选项可以多次使用。
注意:使用此选项而不是设置 LD_LIBRARY_PATH,因为那个环境
变量用于控制运行时链接器并滥用它来设置共享
例如,在交叉编译时,构建时的库路径可能会出现问题。
-d依赖域
添加要添加到控制文件依赖项字段的依赖项 依赖域.
(此字段的依赖项放在变量中 文件库:依赖-
部分.)
这个 -d依赖域 选项对选项后的所有可执行文件生效,
直到下一个 -d依赖域。 默认值 依赖域 is 取决于.
如果相同的依赖项(或一组替代项)出现在多个
识别的依赖字段名称 预先依赖, 取决于, 推荐, 增强 or
提示 然后 dpkg-shlibdeps 将自动删除所有依赖项
除了代表最重要的依赖项的字段。
-p变量名前缀
开始替换变量 变量名前缀: 而不是 文件库:。 同样
以开头的任何现有替换变量 变量名前缀: (而不是
文件库:) 从替换变量文件中删除。
-O[文件名]
将替换变量设置打印到标准输出(或 文件名 如果指定,
从 dpkg 1.17.2 开始),而不是被添加到替换变量文件中
(Debian/substvars 默认)。
-t类型 首选为给定包类型标记的共享库依赖信息。 如果
没有标记的信息可用,回退到未标记的信息。 默认的
包类型是 DEB. 共享库依赖信息被标记为给定
通过在它前面加上类型名称、冒号和空格来键入。
-L本地 shlibs 文件
从以下位置读取覆盖共享库依赖项信息 本地 shlibs 文件
而不是 debian/shlibs.local.
-Tsubstvars 文件
将替换变量写入 substvars 文件; 默认是 Debian/substvars.
-v 启用详细模式(自 dpkg 1.14.8 起)。 显示大量消息
解释什么 dpkg-shlibdeps 一样。
-x包
从生成的依赖项中排除包(自 dpkg 1.14.8 起)。 这是
有助于避免提供 ELF 二进制文件的包的自依赖
(可执行文件或库插件)使用包含在同一包中的库。
此选项可以多次使用以排除多个包。
-S包构建目录
调查 包构建目录 首先在尝试查找库时(自 dpkg
1.14.15)。 当源包构建多种风格的
相同的库,并且您希望确保从给定的二进制文件中获得依赖项
包裹。 您可以多次使用此选项:目录将在
其他二进制包目录之前的顺序相同。
--忽略缺失信息
如果找不到共享库的依赖信息,不要失败(因为
dpkg 1.14.8)。 不鼓励使用此选项,所有库都应提供
依赖信息(无论是 shlibs 文件,还是符号文件),即使
它们尚未被其他软件包使用。
--警告=折扣值
折扣值 是一个位域,定义了可以由
dpkg-shlibdeps (自 dpkg 1.14.17 起)。 位 0(值=1)启用警告“符号
符号 用于 二进制 在没有任何库中找到”,位 1(值 = 2)启用
警告“包可以避免无用的依赖”和位 2(值 = 4)启用
警告 ”二进制 不应与 图书馆”。 默认的 折扣值 是 3:
默认情况下,前两个警告处于活动状态,最后一个不是。 放 折扣值 到 7 如果
您希望所有警告都处于活动状态。
--管理目录=DIR
更改位置 的dpkg 数据库(自 dpkg 1.14.0 起)。 默认位置
is /var/lib/dpkg.
-?, - 帮帮我
显示使用信息并退出。
- 版
显示版本并退出。
诊断
</p>
建立 dpkg-shlibdeps 分析生成的每个二进制文件使用的符号集
包,它能够在几种情况下发出警告。 他们会通知您可以
在包中得到改进。 在大多数情况下,这些改进涉及上游资源
直接地。 按照重要性从低到高的顺序,这里是您可以发出的各种警告
遇到:
符号 符号 用过的 by 二进制 发现 in 没有 of 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 库。
在与二进制文件链接的库中未找到指示的符号。
这个 二进制 很可能是一个图书馆,它需要与一个额外的链接
构建过程中的库(选项 -l图书馆 的链接器)。
二进制 包含 an 无法解决的 参考 至 符号 符号: 它的 大概 a 插入
在与二进制文件链接的库中未找到指示的符号。
这个 二进制 很可能是一个插件,该符号可能由
加载此插件的程序。 理论上插件没有任何 SONAME 但这个
二进制确实有一个,因此无法明确识别。
然而,二进制文件存储在非公共目录中的事实是一个强大的
表明它不是普通的共享库。 如果二进制真的是一个
插件,然后忽略此警告。 但总有可能是
真正的库和链接到它的程序使用 RPATH 以便动态
装载机找到它。 在这种情况下,库坏了,需要修复。
包 可以 避免 a 无用 依赖 if 二进制 是 而不去 链接 驳 图书馆 (它 使用
没有 of 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 图书馆的 符号)
没有任何一个 二进制 与 图书馆 使用提供的任何符号
由图书馆。 通过修复所有二进制文件,您将避免依赖
与此库相关联(除非另一个库也生成了相同的依赖项)
真正使用的库)。
包 可以 避免 a 无用 依赖 if 二进制 为 而不去 链接 驳 图书馆 (他们
使用 没有 of 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 图书馆的 符号)
与上述警告完全相同,但适用于多个二进制文件。
二进制 应该 而不去 be 链接 驳 图书馆 (它 使用 没有 of 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 图书馆的 符号)
这个 二进制 链接到它不需要的库。 这不是问题,但有些
通过不链接可以获得二进制加载时间的小的性能改进
这个库到这个二进制文件。 此警告检查的信息与
前一个,但对每个二进制文件都这样做,而不是对所有二进制文件进行全局检查
二进制文件分析。
故障
dpkg-shlibdeps 如果找不到二进制文件使用的公共库,或者这将失败
库没有关联的依赖信息(shlibs 文件或符号文件)。 一种
公共图书馆有一个 SONAME 并且是版本化的 (libsomething.so.X)。 私人图书馆(如
插件)不应该有 SONAME 并且不需要版本控制。
不能 发现 图书馆 图书馆-soname 打印车票 by 二进制 (它的 路径 is '路径')
这个 二进制 使用一个名为 图书馆-soname 但是 dpkg-shlibdeps 已经无法
找到图书馆。 dpkg-shlibdeps 创建要检查的目录列表
以下:在二进制文件的 RPATH 中列出的目录,在
/etc/ld.so.conf, 添加的目录 -l 选项,目录中列出
LD_LIBRARY_PATH 环境变量和标准公共目录(/ lib目录,
/ usr / lib目录, /lib32, / usr / lib32, /lib64, /usr/lib64)。 然后它检查那些目录
在正在分析的二进制文件的包的构建树中,在包的构建中
用 表示的树 -S 命令行选项,在其他包的构建树中
包含一个 DEBIAN/shlibs 或 DEBIAN/symbols 文件,最后在根目录中
目录。 如果在这些目录中的任何一个目录中都没有找到库,那么你会得到
这个错误。
如果未找到的库位于同一包的私有目录中,则您
想要添加目录 -l. 如果它在另一个正在构建的二进制包中,
你想确保这个包的 shlibs/symbols 文件已经
创建和那个 -l 包含适当的目录(如果它也在私有目录中)
目录。
没有 依赖 信息 发现 HPMC胶囊 库文件 (用过的 by 二进制).
需要的库 二进制 已被发现 dpkg-shlibdeps in 库文件 但是
dpkg-shlibdeps 一直无法找到该库的任何依赖信息。
为了找出依赖关系,它尝试将库映射到 Debian 包
在...的帮助下 的dpkg -S 库文件. 然后它检查了相应的 shlibs
和符号文件 /var/lib/dpkg/信息/, 并在各种包的构建树中
(debian/*/DEBIAN/)。
此失败可能是由于
库的包。 如果库是在
相同的源包,如果尚未创建 shlibs 文件(在这种情况下
您必须在调用之前修复 debian/rules 以创建 shlib dpkg-shlibdeps)。 坏的
RPATH 还可能导致在非规范名称下找到库(例如:
/usr/lib/openoffice.org/../lib/libssl.so.0.9.8 而不是 /usr/lib/libssl.so.0.9.8)
与任何包裹无关, dpkg-shlibdeps 试图解决这个问题
尝试使用规范名称(使用 实路径(3)) 但它可能并不总是
工作。 最好清理二进制文件的 RPATH 以避免出现问题。
调用 dpkg-shlibdeps 在详细模式(-v) 将提供更多信息
关于它试图在哪里找到依赖信息。 这可能有用,如果
你不明白为什么它会给你这个错误。
使用 onworks.net 服务在线使用 dpkg-shlibdeps
