c - 如何测试 Linux 内核源代码中的特定 .c 文件是否构建?

标签 c linux

我经常使用内核,因为将它们打包在我的发行版 (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/

相关文章:

c - C中的进程同步

c - 如何在 gtk 应用程序中执行定期作业?

java - Postgres 9.2 - 恢复转储正在翻译转义的 unicode 并破坏 java 序列化对象

python - 使用 eBPF 在 Python 堆栈级别跟踪代码是否可行?

c - 如何限制我的用户输入

c - 我怎样才能在暴力攻击中最好地使用 "parallelise"一组四个嵌套的 for() 循环?

c - (U) Ruby 扩展 : rb_gc_mark() and instance variables

linux - spi_driver.id_table 和 spi_driver.driver.of_match_table 的区别

c - semop( ) 失败,错误号 4。semop() 是否支持进程内的线程竞争?

c - 结构本身正在改变值(value)?