h2ph - 将 .h C 头文件转换为 .ph Perl 头文件
h2ph [-d 目标目录] [-r | -a] [-l] [-h] [-e] [-D] [-Q] [头文件]
h2ph 将指定的任何 C 头文件转换为相应的 Perl 头文件格式。在 /usr/include 中运行时最容易
cd /usr/include; h2ph * sys/*
或
cd /usr/include; h2ph * sys/* arpa/* netinet/*
或
cd /usr/include; h2ph -r -l .
输出文件放置在以 Perl 架构相关库目录为根的层次结构中。您可以使用 -d 开关指定不同的层次结构。
如果在没有参数的情况下运行,则将标准输入过滤到标准输出。
将生成的 .ph 文件放在 目标目录 下,而不是放在默认的 Perl 库位置($Config{'installsitearch'}
)下。
递归运行;如果任何头文件是目录,则在这些目录(及其子目录等)中的所有文件中运行h2ph。-r和-a互斥。
自动运行;转换头文件,以及它们包含的任何.h文件。此选项将在 C 编译器通常使用的所有目录中搜索.h文件。-a和-r互斥。
符号链接将在目标目录中复制。如果未指定-l,则跳过链接。
在 .ph 文件中放置“提示”,这将有助于找到h2ph中的问题。在您需要包含语法错误的.ph文件的情况下,您将看到稍微有用的内容,而不是晦涩的
[ some error condition ] at (eval mmm) line nnn
您将看到稍微有用的内容
[ some error condition ] at filename.ph line nnn
但是,使用-h构建时,.ph文件的大小几乎增加了一倍。
如果在转换过程中遇到错误,则将删除输出文件,并发出警告,而不是立即终止转换。
将.h文件中的代码作为注释包含在.ph文件中。这主要用于调试h2ph。
'安静'模式;不要打印正在转换的文件的名称。
不使用环境变量。
/usr/include/*.h
/usr/include/sys/*.h
等
Larry Wall
perl(1)
如果无法读取或写入所涉及的文件,则发出通常的警告。
不会为您构建 %sizeof 数组。
它不处理所有 C 构造,但它确实尝试隔离评估中的定义,以便您可以获取它可以转换的定义。
它只被用作一个粗略的工具。您可能需要对生成的文件进行修改。
您必须手动运行此程序;它不会作为 Perl 安装的一部分运行。
不会处理逐段构建的复杂表达式,例如
enum {
FIRST_VALUE,
SECOND_VALUE,
#ifdef ABC
THIRD_VALUE
#endif
};
不一定能找到 C 编译器内部定义的所有符号。