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

标签 perl ioctl

我需要使用 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 是我的模块之一,但我的文件中没有类似的功能。

最佳答案

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

#define __INT16_C(c) c

将第 164 行的代码替换为
eval 'sub __INT16_C {
    my($c) = @_;
    eval q($c);
}' unless defined (&__INT16_C);

这是 h2ph 的其他版本产生。

关于perl - 将 sys/ioctl.ph 添加到 Perl 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12039566/

相关文章:

javascript - 最可行的 WebSocket/Perl 解决方案

python - 如何为不同的 Perl 应用程序安装专门的环境?

linux - 如何使用 Perl 将数据文件的 A 列除以 B 列

linux - 将自定义结构类型添加到 strace

c - 为什么 uaccess.h 中的 access_ok 宏的实现没有使用它的所有参数?

perl - 如何让 Perl 一次从 STDIN 获取一个字符的输入?

c - 如果 cmd = 2,则不调用 ioctl

windows - 如何加载并启动Windows驱动程序?

c - 无法从用户空间应用程序访问结构数组

perl - 哪些 Perl 模块适合数据处理?