开发者社区 问答 正文

null?报错

按照官网的文档一步步走到make这一步,报错如下

make[1]: Entering directory /eucalyptus/gatherlog' rm -rf generated mkdir -p generated Generating client stubs sh /opt/euca-WSDL2C.sh -uri ../wsdl//eucalyptus_gl.wsdl -g -d adb -u -uw -f -o generated | grep -v 'the classpath' Retrieving document at '../wsdl//eucalyptus_gl.wsdl'. Generating server stubs sh /opt/euca-WSDL2C.sh -uri ../wsdl//eucalyptus_gl.wsdl -sd -ss -d adb -u -uw -f -o generated | grep -v 'the classpath' Retrieving document at '../wsdl//eucalyptus_gl.wsdl'. Adding marshalling calls to server stubs ../tools/add_marshalling.pl generated/axis2_skel_*.c ../tools/add_marshalling.pl: line 63: syntax error near unexpected token(' ../tools/add_marshalling.pl: line 63: FILE: for $file ( @ARGV ) {' make[1]: *** [generated/stubs] Error 2 make[1]: Leaving directory/eucalyptus/gatherlog' make: *** [build] Error 2

在安装依赖包时,有几个包没有可用的包。就没装,感觉不是依赖包的问题,源码是git clone从官网下的,实在不知如何解决,求各路大神援助。。。。先谢过!



展开
收起
爱吃鱼的程序员 2020-06-22 11:32:47 404 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    把报错的那部分代码粘出来已经贴出来了,就是11,12,13行,这个脚本我看了下没错,make到16行的时候就停止了。这个脚本是源代码中的脚本<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.659090995788574px;background-color:#FFFFFF;">../tools/add_marshalling.pl文件的63行前后贴一下<preclass="brush:perl;toolbar:true;auto-links:false;">6162FILE:for$file(@ARGV){63open(IN,"<$file")ornextFILE;64undef$/;65$=<IN>;66$/="\n";67closeIN;68print"scanning$file\n";6970$done=0;71if(s/#include"([^"]+)"/#include"$1"\n#include<server-marshal.h>\n/s){$done++;}72if(s/adb(\w+)t*axis2_skel(\w+)(\w+)(([^)]+)adb(\w+)t*(\w+)[^}]+TODO[^}]+}/adb$1_taxis2_skel_$2_$3($4adb_$5_t$6)\n{return(${3}Marshal($6,env));}/sg){$done++;}73if(s/adb_(\w+)t*axis2_skel(\w+)(\w+)(constaxutil_env_t*env[^}]+TODO[^}]+}/adb$1_t*axis2_skel_$2_$3(constaxutil_env_t*env)\n{return(${3}Marshal(env));}/sg){$done++;}74if(s//*Anyinitializationstuffofaxis2_.goeshere*//adb_InitService();\n/sg){$done++;}7576if($done)77{7879print"modifying$file\n";80system"cp$file$file~";81open(OUT,">$file")ordie"couldnotoverwrite$file";82printOUT;83closeOUT;84}85}

    这是那个脚本的代码




    这段代码本身是没有问题的有可能是这个脚本传入的参数有问题,你在for$file(<aclass='referer'target='_blank'>@ARGV)一行之前加入useData::Dumper;printDumper(@ARGV);把脚本的输入参数打印出来看看FILE:for$file(<aclass='referer'target='blank'>@ARGV){#轮循读入的参数,并且把轮循到结果依次赋值给$file,输入的参数应该是一系列的文件名称
      open(IN,"<$file")ornextFILE;#打开文件的句柄
      undef$/;#把内部默认变量$/设置为undef,$/定义的是文件的结束分割符
      $
    =<IN>;#读入句柄的输入内容
      $/="\n";#设置文件分割符为换行
      closeIN;#关闭文件句柄
      print"scanning$file\n";#输出指定的文件名称


    你可以参考上面的注释进行调试,看看输入的参数是不是有特殊字符了,我觉得有可能是这样。

    我在脚本的61行添加了”<spanstyle="color:#444444;font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;">useData::Dumper;printDumper(@ARGV);“。重新make还是报错,并没有打印出输入的参数,是我添加的方式不对吗?调试脚本是单独调试吗?非常感谢你的帮助!你make clean一下,然后重新make试试<divclass="linealt2">
    ./tools/add_marshalling.pl:line63:syntaxerrornearunexpectedtoken('</td></tr></tbody></table>这个是安装报错的地方我是这样修改的<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;">add_marshalling.pl</span>脚本<preclass="brush:perl;toolbar:true;auto-links:false;">63useData::Dumper;printDumper(\@ARGV);64FILE:usefor$file(@ARGV){65open(IN,"<$file")ornextFILE;66undef$/;67$_=<IN>;68$/="\n";69closeIN;70print"scanning$file\n";</pre><p>makeclean</p><p>make</p><p>报错信息为</p><p></p><preclass="brush:perl;toolbar:true;auto-links:false;">rm-rfgeneratedmkdir-pgeneratedGeneratingclientstubssh/opt/euca-WSDL2C.sh-uri../wsdl//eucalyptus_gl.wsdl-g-dadb-u-uw-f-ogenerated|grep-v'theclasspath'Retrievingdocumentat'../wsdl//eucalyptus_gl.wsdl'.Generatingserverstubssh/opt/euca-WSDL2C.sh-uri../wsdl//eucalyptus_gl.wsdl-sd-ss-dadb-u-uw-f-ogenerated|grep-v'theclasspath'Retrievingdocumentat'../wsdl//eucalyptus_gl.wsdl'.Addingmarshallingcallstoserverstubs../tools/add_marshalling.plgenerated/axis2_skel_*.c../tools/add_marshalling.pl:line63:syntaxerrornearunexpectedtoken('../tools/add_marshalling.pl:line63:useData::Dumper;printDumper(\@ARGV);'make[1]:***[generated/stubs]Error2make[1]:Leavingdirectory/eucalyptus-3.4.2/gatherlog'make:**[build]Error2





    你把<spanstyle="font-family:Verdana,sans-serif,宋体;line-height:normal;background-color:#FFFFFF;"> <spanstyle="font-size:14px;line-height:normal;font-family:微软雅黑,Verdana,sans-serif,宋体;background-color:#FFFFFF;">add_marshalling.pl脚本63行前面部分贴一下

    2020-06-22 11:33:06
    赞同 展开评论