0

我是 linux 内核/系统开发的新手。

下面是我用来编译我的应用程序的 Makefile

CROSS_COMPILE   ?=
KERNEL_DIR  ?= /usr/src/linux

CC      := $(CROSS_COMPILE)gcc
KERNEL_INCLUDE  := -I/usr/include
CFLAGS      := -W -Wall -g $(KERNEL_INCLUDE)
LDFLAGS     := -g

all: finder-drv

finder-drv: finder.o
    $(CC) $(LDFLAGS) -o $@ $^

clean:
    rm -f *.o
    rm -f finder

我收到以下错误:

/usr/include/arm-linux-gnueabi/sys/ioctl.h:22:22: fatal error: features.h: No such file or directory

我不知道为什么 features.h 丢失了。

我运行以下命令后出现此问题:

make headers_install INSTALL_HDR_PATH=/usr

谁能告诉我如何解决问题并在用户空间应用程序中正确链接/使用内核头文件?

4

2 回答 2

2

问题解决了。

为用户空间应用程序导出内核头文件的正确命令如下

制作 headers_install INSTALL_HDR_PATH=/usr/include

我给了/usr而不是/usr/include

我通过使用以下命令/usr/include重新安装恢复了已删除的文件libc-dev

apt-get install lib6-dev --reinstall

克里斯,感谢您的时间和帮助。

于 2012-05-11T18:37:56.000 回答
2

直接针对内核编译用户空间程序并不适用。

如果您正在编写用户空间程序,则针对导出的标头进行编译,并仅使用导出的功能,例如系统调用。您可能会通过 C 库提供的代理。

如果您正在编写内核模块,您应该使用内核构建系统而不是制作自己的 makefile。

于 2012-05-10T12:25:36.783 回答