英语法语西班牙语

运行服务器 | Ubuntu > | Fedora > |


OnWorks 网站图标

icheck - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 icheck

这是 icheck 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

名称


icheck - C 接口 ABI/API 检查器

概要


检查 --规范化 [[--基线 文件] ...] [配置[GCC_OPTIONS] [--]

检查 - 相比 [配置] 旧文件 新文件

商品描述


用于静态检查 API 和 ABI 更改的 C 接口的工具。 对类型的所有更改
应该检测可能导致 ABI 更改的声明以及大多数 API 更改。

icheck 旨在与库一起使用,作为防止 ABI 漂移的一种方法。

指令


使用--canonify 将一组源文件缩减为规范的接口文件,然后进行比较
带有 --compare 的两个这样的接口文件。 如果它们之间有接口变化,
icheck 将描述更改并失败。

--规范化 [[--基线 文件] ...] [配置[GCC_OPTIONS] [--]

规范源代码文件(通常是 .h 标头),以便稍后与
- 相比. 通常与 -o 将摘要保存到文件的选项。

- 相比 [配置] 旧文件 新文件

读取使用生成的两个规范接口文件 --规范化 并比较
应用程序公共接口中更改的源代码结构
(开发人员接口或 API)和应用程序二进制接口 (ABI) 用于
链接到其他程序或库。

配置


查核 配置
-o, - 输出 文件

将输出发送到 FILE,而不是 stdout。

-调试 N

转储调试信息。

- 只要 事情

只处理给定的事物。

--跳过 文件

跳过不必要的东西 文件.

--从重新跳过 正则表达式

从匹配正则表达式的文件中跳过不必要的东西。

--仅来自 文件

只取东西 文件.

--only-from-re 正则表达式

只从匹配正则表达式的文件中获取内容。

GCC_OPTIONS

GCC_OPTIONS 传递给 gcc -E

帮助 配置
- 帮帮我
显示帮助概要 检查.

示例


所有源文件都经过gcc预处理,所以canonify需要相同的include信息
作为源代码 - 按照 Makefile 中的语法包含 -I 选项 CPP (或
GCC) 以便可以找到所有必要的标题。 检查 如果需要,将中止
找不到标题。 源代码必须是可编译的; icheck 无法处理以下文件
不能直接编译。 如果标题缺少#include 语句,或者其他情况
需要特殊使用,则不能直接用icheck处理。
相反,编写一个适当设置的存根 C 文件,然后#includes
标头。

检查 --规范化 -o ~/icheck/旧版本 -I/usr/include/foo-2.0 /usr/src/bar/src/foobar.h

准备 foobar.h 文件及其包含的所有文件的文本摘要。 总结是
写给 ~/icheck/旧版本. 重复 /usr/src/bar1/src/foobar.h - 同一个文件
在较新的源目录中,输出到一个新文件,例如 ~/icheck/新版本.

检查 - 相比 -o ~/icheck/results.txt ~/icheck/旧版本 ~/icheck/新版本

编写两个摘要文件的比较报告。 报告指出所有
比较期间发现的 ABI 和/或 API 的变化。

检查 --规范化 -o debian/icheck.canonical -idebian/foo-dev/usr/include debian/foo-
开发/usr/include/foobar.h

检查 - 相比 debian/icheck.manifest debian/icheck.canonical

这两个声明,包含在一个 Debian/规则 文件,将导致包构建
如果 API 或 ABI 以意外方式更改,则失败,其中 icheck.manifest 是
预期的接口,包含在包中。

请注意, --compare 的参数本身是经过预处理的有效 C 文件,
所以 icheck.manifest 可以包含 C 预处理器逻辑。 这在打包时很有用
根据主机架构导出不同的接口。 在这种情况下,你不能
当界面发生变化并且您需要将其替换为 icheck.canonical 的新副本时
更新清单。 与其手动更新整个清单,不如手动
在一个文件中写入接口描述(icheck.static-清单) 然后使用:

检查 --规范化 --基线 debian/icheck.static-manifest -o debian/icheck.dynamic-
舱单

最后,创建 icheck.manifest 包含:
#include "icheck.static-manifest"
#include "icheck.dynamic-manifest"
这允许您手动更新清单的某些部分,同时仍然自动
生成其余部分。

OUTPUT


icheck 根据类型生成每个可能的 API 或 ABI 更改的详细描述
信息。 它不会调查实际的程序代码,因此有可能
它检测到的某些类型更改不是实际的 ABI 或 API 更改。 然而,这通常
只有在明确为它编写程序代码时才会发生。 如果有疑问,假设它是
改变。

最后,icheck 提供更改的摘要。 请注意,这里的方向是
取决于参数的顺序 --compare:旧接口必须先出现,
否则方向将相反。 各种术语的含义如下
如下:

ABI ABI 是兼容的,如果根据一个版本的
使用其他版本运行时,界面将工作。

API 如果事物是​​针对一个版本的
可以针对其他接口进行编译。

向前兼容
如果针对旧版本进行编译,则接口是向前兼容的
版本将与新的一起使用。 这是重要的特征
的变化。

向后兼容
接口是向后兼容的,如果根据新编译的东西
版本将与旧的一起使用。 这是重要的特征 shlibs
版本 变化。 如果您不构建 Debian 软件包,您可能不会
关心不向后兼容的更改。

使用 onworks.net 服务在线使用 icheck


Ad


Ad