【问题标题】:Linux kernel 'make rpm-pkg' throws errorLinux 内核“make rpm-pkg”抛出错误
【发布时间】:2016-02-13 05:14:25
【问题描述】:

我正在尝试创建自定义内核 rpm。所以我使用了“make rpm-pkg”。 在遇到此错误之前一切正常。

..
..
INSTALL sound/usb/line6/snd-usb-toneport.ko
INSTALL sound/usb/line6/snd-usb-variax.ko
INSTALL sound/usb/misc/snd-ua101.ko
INSTALL sound/usb/snd-usb-audio.ko
INSTALL sound/usb/snd-usbmidi-lib.ko

scripts/Makefile.fwinst:43: *** mixed implicit and static pattern rules.  Stop.
make[2]: *** [_modinst_post] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.jJi4sq (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.p88MqU (%install)
make[1]: *** [rpm-pkg] Error 1
make: *** [rpm-pkg] Error 2

我知道 Makefile 声明有问题,但也想知道是否有人遇到过这个问题。

【问题讨论】:

  • 您使用的是 make 3.82 还是 4.0?因为如果你是这可能是savannah.gnu.org/bugs/?func=detailitem&item_id=33034
  • 它的 3.82。然后我将不得不编译 4.x 版本。但也热衷于为什么这对任何人来说都不是问题。我认为内核人员会得到这个。

标签: linux makefile kernel


【解决方案1】:

如果您使用的是 make 版本 3.81 或 3.82,那么这很可能是 here 讨论的已知 make“错误”。

具体而言,对 make 认为是一组有意义的目标进行更改,以在单个列表中指定以不兼容的方式更改,并且内核一直在使用一组无效的目标。

在 GNU Make 维护者和其他一些相关开发人员之间反复讨论之后,修复程序是将致命错误转换为警告(至少是暂时的)。

【讨论】:

  • 4.1 也没有帮助。得到同样的错误。我试图通过分离 Makefile 中的规则来解决问题。但这会导致不同的错误,例如无法找到 make 目标。
  • 你拆分了它抱怨的目标,发生了什么?它并没有一直抱怨我认为的那种情况。它抱怨过其他案件吗? 4.1 不会消除关于混合的警告,它只是防止它成为致命错误。如果您想粘贴bin/gist/etc,我很想看看您在库存makefile 上使用4.1 时遇到的错误以及拆分目标后遇到的错误。他们。
  • scripts/Makefile.fwinst:43: *** 混合隐式和静态模式规则。停止。 Makefile:1143: 目标“_modinst_post”的配方失败 make[2]: *** [_modinst_post] 错误 2 错误:来自 /var/tmp/rpm-tmp.IjM511 (%install) 的错误退出状态 (%install) RPM 构建错误:错误退出来自 /var/tmp/rpm-tmp.IjM511 (%install) 脚本/包/Makefile:39 的状态:目标“rpm-pkg”的配方失败 make[1]:*** [rpm-pkg] 错误 1 ​​Makefile: 1235: 目标“rpm-pkg”的配方失败 make: *** [rpm-pkg] 错误 2 # make --version GNU Make 4.1
  • make 'INSTALL_FW_PATH=/root/rpmbuild/BUILDROOT/kernel-4.2.0+-11.%{_arch}/lib/firmware/4.2.0+' firmware_install V=1 make -f . /scripts/Makefile.fwinst obj=firmware __fw_install make[1]: *** No rule to make target '/root/rpmbuild/BUILDROOT/kernel-4.2.0+-11.%{_arch}/lib/firmware/4.2 .0+/bnx2x/bnx2x-e1-6.2.9.0.fw','__fw_install' 需要。停止。 Makefile:1038: 目标“firmware_install”的配方失败
  • 是的,这根本不是同一个问题。这是_modinst_post 目标中的实际构建失败。包构建实际上在那里失败了(看起来有些东西无法扩展,导致试图构建一个具有虚假名称的文件)。我不知道那里具体发生了什么。除此之外,4.1 确实修复了原始问题的“致命错误”性质。
【解决方案2】:

我能够解决这个问题。显然,UTS_MACHINE 不适合 arm64 的问题。它应该是 aarch64 以便打包脚本正确使用它。在生成 rpm 规范文件的脚本中也有一些小的调整。 所以在这种情况下,'make' 不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2022-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多