使用 make 在 linux 上编译驱动程序

compile driver on linux with make

这条错误信息是什么意思?我正在尝试 运行 制作。看起来好像缺少配置。配置是内核源代码的一部分?

make -C /lib/modules/4.2.0-19-generic/build SUBDIRS=/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE modules
make[1]: Entering directory '/usr/src/linux-headers-4.2.0-19-generic'
  CC [M]  /home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.o
/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.c:55:6: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time]
  " " __TIME__ " " __DATE__ "\n"
      ^
/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.c:55:19: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
  " " __TIME__ " " __DATE__ "\n"
                   ^
cc1: some warnings being treated as errors
scripts/Makefile.build:264: recipe for target '/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.o' failed
make[2]: *** [/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.o] Error 1
Makefile:1398: recipe for target '_module_/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE' failed
make[1]: *** [_module_/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.2.0-19-generic'
Makefile:30: recipe for target 'default' failed
make: *** [default] Error 2

在您的 Makefile 中将其添加到 CFLAGS 变量

-Wno-date-time

这将禁用警告,并且由于警告被视为错误,因为 Makefile 通过 -WerrorCFLAGS 代码不能编译.

我知道这是因为警告被添加到更高版本的 GCC 中,它最初会使用 eg -Wall 编译,但由于这个额外的限制现在不再这样做了。

如果您无法使用上面的 makefile mod 修复它,我已经在我自己的驱动程序构建中修复了它,方法是将源代码中有问题的行括起来:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdate-time"
... code with __DATE_ __TIME__
#pragma GCC diagnostic pop

这将仅对受影响的行关闭 'new' 诊断。