slimshadyy 2016-02-25 02:22 采纳率: 0%
浏览 773

php C扩展 ext_skel报错

执行./ext_skel --extname=test2_module --proto=test2_module.def
报错 :
awk: syntax error at source line 256 source file /Applications/MAMP/bin/php/php5.6.6/include/php/ext/skeleton/create_stubs
context is
if (!stubs) print "" > extname >>> "/function_warning" <<<
awk: illegal statement at source line 257 source file /Applications/MAMP/bin/php/php5.6.6/include/php/ext/skeleton/create_stubs
awk: syntax error at source line 267 source file /Applications/MAMP/bin/php/php5.6.6/include/php/ext/skeleton/create_stubs
Creating basic files: config.m4 config.w32 .gitignore test2_module.c php_test2_module.h CREDITS EXPERIMENTAL tests/001.phpt test2_module.phprm: function_entries: No such file or directory
rm: function_declarations: No such file or directory
rm: function_stubs: No such file or directory
[done].

请问如何处理 求解

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 00:57
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于awk命令在创建stub文件时出现的错误。awk是一个强大的文本编辑器,用于解析和操作文本数据。

    awk命令的语法如下:

    awk [options] 'command'
    

    选项可以包括以下内容:

    • -F: 字符串分隔符
    • -v: 变量赋值
    • -f: 文件指针
    • -o: 输出格式化
    • -n: 不打印输出

    在这个问题中,awk命令试图在test2_module.def文件中添加一些伪代码(stub)来覆盖原始函数定义。然而,awk无法识别这个伪代码,并因此产生了错误。

    为了解决这个问题,你需要修改awk命令以正确地解析和生成stub文件。这可能涉及到使用awk的一些特殊功能或配置awk的环境变量。

    例如,你可以尝试将awk命令改为以下形式:

    awk -v OFS=';' '
    BEGIN {
        stubs = "function foo() { echo 'Hello, World!'; }";
    }
    {
        printf "%s", st;
        exit;
    }' test2_module.def
    

    这里,我们使用了awk的awk命令行参数-v OFS=';``,它告诉awk使用逗号作为字段分割符。然后,我们在{}块中添加了一个伪代码字符串stubs = "function foo() { echo 'Hello, World!'; }";,并将其设置为awk变量st。最后,在printf %s, st;语句中,我们将awk变量s与逗号分隔的字符串stubs进行比较,并输出结果。这样,awk就可以成功解析和生成stub文件。

    请注意,这个解决方案只适用于awk命令。如果你正在使用其他类型的脚本语言(如Perl),你可能需要采取不同的方法来解决类似的问题。

    评论

报告相同问题?