Devkit8000用のLDDが作れない

Devkit8000用のLDDが作れない

Devkit 8000 用の Linux デバイス ドライバーをビルドしようとしています。次のエラー メッセージが表示されます。

エラーメッセージ

指示に従おうとすると、よくわからない「はい/いいえ」の質問がいくつも表示されます。最終的には、25 種類のプロセッサ(?) から選択することになります。

プロセッサの選択

これが私のメイクファイルです:

ifeq ($(KERNELRELEASE),)

KERNELDIR = ~/sources/linux-3.2.6
PWD := $(shell pwd)
modules:
$(MAKE) ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- -C $(KERNELDIR) M=$(PWD) modules

.PHONY: modules clean

else
# called from kernel build system: just declare what our modules are
obj-m := LED_timer.o
endif

私のコード自体はまだ関連性がないと思うし、知る私のソースコードにはバグがたくさんあるので、見たくないですよね、ハハ。

答え1

使用しているソースをどこから入手したかは述べていませんが、明らかに.configそこには無効な部分があります。これは、プロセッサの種類など、さまざまなオプションを設定するために使用されます。これらのオプションは文字通り何百もあり、互いに複雑に依存しています (たとえば、選択したプロセッサによって、他の選択肢が左右されます)。

バニラ ソースには が.config含まれていません。 を提供するか、作成する必要があります。 は、 make oldconfigが以前のバージョンのものであり、更新する必要がある場合に使用されます.config。 このプロセスは完全に自動化できないこともあり、基本的には CLI インターフェイスを使用する を実行することになります。設定なしでmake config試した場合にも、この状態になることがあります。make oldconfig

make menuconfigこれが一体何なのかをよりよく理解するには、よりグラフィカルなものを見る必要があります。

しかし、何もないところから始めて、自分に合った設定を取得しようとするのは、何をしているのかわかっていなければ不可能です。理想的には、実行中のカーネルを作成するために使用した設定から始めるのがよいでしょう。これは、モジュールを構築するだけの場合、特に当てはまります。実際のカーネルを構築する必要はありませんが、モジュールをコンパイルするには、それが使用されるカーネルがどのようにコンパイルされたかを知っておく必要があります。

うまくいけば、/proc/config.gzターゲットシステム上でそれを見つけることができるでしょう。これはディスク上のファイルではないので、取得するにはシステムが稼働している必要があります。gzip圧縮されているので

gunzip config.gz
mv config .config

これで完了です。これをソースツリーにコピーして実行し、make menuconfigビルドするモジュールの命令を追加します。

それが存在しない場合は、使用された構成を追跡する必要があります。 また、モジュールを構築する場合は、まったく同じカーネル バージョンを使用する必要があることにも注意してください。

こちらは一般的な概要コンパイル プロセスの詳細については、こちらも役立つかもしれませんので、まず 2 番目と 3 番目を読んでください。

答え2

まず、 のような古い設定をクリアする必要がありますmake mrproper

その後、再度実行してくださいmake menuconfig。不要な項目を確実に選択した場合は、.config 作成されません。

関連情報