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

カーネルに対して直接ユーザースペースプログラムをコンパイルすることは、機能することを意図していません。

ユーザースペースプログラムを作成している場合は、エクスポートされたヘッダーに対してコンパイルし、syscallなどのエクスポートされた機能のみを使用します。おそらく、Cライブラリによって提供されるプロキシを通過します。

カーネルモジュールを作成している場合は、独自のmakefileを作成するのではなく、カーネルビルドシステムを使用する必要があります。

于 2012-05-10T12:25:36.783 に答える
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 に答える