我有一个编译内核模块和用户空间应用程序的第 3 方软件包。不幸的是,这个第 3 方非常复杂,并且没有使用 Kbuild 来构建内核模块(我试过但没有成功)。
我尝试使用以下几行构建一个简单的驱动程序:
arm-linux-gnueabihf-gcc -D__KERNEL__ -Wall -include /lib/modules/4.4.62-18.6-default/build/include/generated/autoconf.h -MD -MP -Werror -O2 -I /usr/src/linux-4.4.62-18.6/include -I /src/include -DMODULE -c -o hello_dkm.o hello_dkm.c
$(LD) -o $(debug_target) $(LD_COMMON_FLAGS) -g $(debug_Objs)
我有:
fatal error: /usr/src/linux-4.4.62-18.6/include/linux/thread_info.h:54:29: fatal error: asm/thread_info.h: No such file or directory
附录
- 平台:Altera Cyclone V SoC,ARM cortex A9 双核
- 内核:linux Altera 3.7.0
- 主机:Linux openSuse 42
PS:在我团队的项目平台中,很难使用使用内核源代码树的经典编译行: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) 模块
提前致谢
您的直接问题是“asm/thread_info.h”不在您的CPATH
中,也没有在您的任何-I
参数中指定。您需要在系统上找到该文件并将其根放入 CPATH
环境变量或 -I
指令中。
为了清楚起见,如果您将文件定位在 /usr/local/include/linux/asm/thread_info.h
,您必须在 arm-linux-gnueabihf-gcc 之前
加上CPATH=/usr/local/include/linux
,或者在命令行某处插入-I/usr/local/include/linux
,也许是对的在 arm-linux-gnueabihf-gcc
之后。
可能还会有其他问题,但这应该会让您进入下一步。
我是一名优秀的程序员,十分优秀!