将 sys/ioctl.ph 添加到 Perl 头文件

Posted

技术标签:

【中文标题】将 sys/ioctl.ph 添加到 Perl 头文件【英文标题】:Adding sys/ioctl.ph to Perl headers 【发布时间】:2012-08-15 21:29:54 【问题描述】:

我需要使用 sys/ioctl.ph,它不包含在我的 slackware 发行版附带的 perl 版本 (5.12.3) 中。

我做了以下事情:

cd /usr/include
h2ph sys/ioctl.ph
cd /usr/lib64/perl5/site_perl/5.12.3/x86_64-linux-thread-multi/
mkdir sys
mv ioctl.ph sys

现在 perl 解释器不会抱怨 sys/ioctl.ph,但这是我得到的错误:

Illegal declaration of subroutine Functions::ServerSocket::__INT16_C at /usr/lib64/perl5/site_perl/5.12.3/x86_64-linux-thread-multi/_h2ph_pre.ph line 164.

这是文件中导致第 164 行错误的内容:

unless (defined &__INT16_C(c)) sub __INT16_C(c)() &c

我不知道从哪里开始。 Functions::ServerSocket 是我的模块之一,但我的文件中没有类似的功能。

【问题讨论】:

【参考方案1】:

您平台上的__INT16_C 宏可能很简单,例如

#define __INT16_C(c) c

将第 164 行的代码替换为

eval 'sub __INT16_C 
    my($c) = @_;
    eval q($c);
' unless defined (&__INT16_C);

这是其他版本的h2ph 生成的。

【讨论】:

以上是关于将 sys/ioctl.ph 添加到 Perl 头文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Perl 脚本中无法将目录添加到存档

如何将变量添加到我的 Perl 单行中?

将perl脚本添加到makefile

使用Perl中的单个命令将元素添加到多个数组

perl处理fasta文件

如何使用 perl Archive::Zip 将文件添加到存档中?