zoukankan      html  css  js  c++  java
  • 一个linux内核编译时遇到的perl语法导致的编译问题解决

      在编译linux内核时,遇到了一个比较诡异的问题。具体log如下:

    Can't locate strict.pm in @INC (you may need to install the strict module) (@INC contains: //usr/lib/perl/site_perl/5.22.1 //usr/lib/perl/vendor_perl/5.22.1 //usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 .) at ./lib/build_OID_registry line 14.
    BEGIN failed--compilation aborted at ./lib/build_OID_registry line 14.
    lib/Makefile:195: recipe for target 'lib/oid_registry_data.c' failed
    make[1]: *** [lib/oid_registry_data.c] Error 2
    Makefile:947: recipe for target 'lib' failed
    make: *** [lib] Error 2

      在网上查找相关代码时,一直没有找到相关的答案,搜索了所有的英文资料,也就发现下以下有价值的信息:

    In Perl 5.8.5 and earlier "use strict;" was a pragma and strict.pm did not exist.

    From Perl 5.8.8 on strict.pm DOES exist and the Perl interpreter will look for it if you "use strict;". But it's still pragma.

    意思就是说在5.8.5早期的版本中,这句话不需要strict.pm。在以后的版本中,才需要strict.pm。

      还有就是有些人说需要使用sudo的权限,或者更改strict.pm的权限。我也做了尝试,发现修改权限后,的确没有报这个错误

    了。可是,由于文件权限会被改掉,这里会在编译过程中报更多的错误,这条路看来在这里走不通了。

        实在没有办法的情况下,我只能研究日志了。从日志中,的确发现了结果重要信息,一个就是错误实在库文件build_OID_registry中

    报的,另外一个就是和关键字“use strict;” 相关,我后来突然想到,能否把这句话注销掉呢?

      在网上查看了相关的资料,发现在perl中,这句话就是起着语法检查的作用,不是关键语句,就直接把这句话干掉了,在重新编译。

    新鲜的zImage就出炉了。

  • 相关阅读:
    IntelliJ IDEA创建Java项目
    Oracle常见五个服务的作用
    Windows2008开启telnet客户端命令
    整理jQuery操作select控件常用功能代码
    Asp.Net程序报错
    Oracle中start with connect by prior用法
    Spring中无法访问resources目录下页面或静态资源
    对搜狗输入法的个人评价
    课堂练习寻找水王
    典型用户分析及用户场景分析
  • 原文地址:https://www.cnblogs.com/dylancao/p/8516320.html
Copyright © 2011-2022 走看看