我很久以前就注意到,编译内核时将参数 -j 设置为 1 或更多不会生成 bzImage。相反,它会在没有任何建议的情况下提前结束。我在我的上网本和家用服务器上都重现了同样的行为。
据我所知,编译停止的点是随机的 - 使用相同参数编译两次可能会停止在不同的文件上。但是,当我运行没有 -j* 参数的 make 时,编译会正常结束并输出一个有效的 bzImage。
两台机器都运行 Intel Atom(上网本上是 N270,服务器上是 330),我已经针对这些处理器进行了编译。如果我没记错的话,我尝试使用 Atom 和通用 x86_64 选项进行编译。
我正在构建的内核版本是 2.6.34.1
我总是在我的 Core2Duo 和 Pentium Dual Core 机器上使用这些选项进行正常编译。
有人遇到过这个问题吗?你知道为什么会发生这种情况吗?有修复或解决方法吗?
答案1
并行 make 过早终止几乎总是由于依赖项指定不足而导致的。不幸的是,修复此问题的唯一方法是分析 Makefile 中列出的所有依赖项,或者仔细检查 make 输出以查找终止的原因。