我经常使用内核,因为将它们打包在我的发行版 (Parabola) 中,有时一些修改会导致单个 .c 文件无法构建。但是我想知道是否有一种方法可以测试这些单个 .c 文件之一,以了解它在构建整个内核时是否会失败。例如,假设 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 无法构建,所以如果我手动执行:
$ gcc drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
它失败了:
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:23:10: fatal error: linux/moduleparam.h: No such file or directory
23 | #include <linux/moduleparam.h>
| ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
大多数包含都在 includes
目录下,但不知道如何使其工作。可以做我想做的事吗?以及如何?
最佳答案
当gcc
无法构建某些内容时,它应该返回一个非零退出代码。当它成功构建某些东西时,它应该返回 0。
如果您在 shell 中执行此操作,则可以检查最近运行的命令的退出代码;它位于 $?
变量中。您可以将退出代码与 0 进行比较,如果它们不匹配,那么您可以在出现错误时执行任何您想做的操作,例如:
gcc somefile.c
if [ $? != 0 ]; then
# do whatever you want to do on errors
fi
关于c - 如何测试 Linux 内核源代码中的特定 .c 文件是否构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59638473/