0

私はLinuxカーネルモジュールプログラミングを学んでいます。私はBeaglebone blackを使っています。シンプルな「Hello World」アプリケーションとmakefileを作りました。私は自分のメークファイルをチェックしています。しかし、私が 'make'に命令すると、次のエラーが表示されます。Linuxカーネルモジュールプログラミングのコンパイルエラー

[email protected]:/home/sonu# make 
make: Warning: File `Makefile' has modification time 2.2e+02 s in the future 
make -C /lib/modules/3.8.13-bone70/build M=/home/sonu modules 
make: *** /lib/modules/3.8.13-bone70/build: No such file or directory. Stop. 
make: *** [all] Error 2 

私はいくつかのウェブサイトを参照しましたが、しかし、彼らはすべて私にパッケージのインストールを依頼しています。私は初心者なので。私はBeagleboneでイーサネットを使ってインターネット接続を設定して起動する方法も知らない。私が立ち往生しているのを助けてください。前もって感謝します。

コードは次のとおりです。

#include<linux/module.h> 
#include<linux/kernel.h> 
#include<linux/init.h> 

static int __init hello(void) 
{ 
    printk(KERN_INFO "Hello World!"); 
    return 0; 
} 

static void __exit hello_cleanup(void) 
{ 
    printk(KERN_INFO "Bye"); 
} 

module_init(hello); 
module_exit(hello_cleanup); 

Makefileがある:あなたがインストールしていないカーネルバージョンのためにあなたのモジュールをビルドしようとしていることが表示されます

obj-m+=Hello.o 

all: 
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 
     $(CC) Hello.c -o test 
clean: 
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 
     rm test 
+1

あなたは助けを求めていますが、Makefile自体には何も与えていません(正しいことは*おそらく間違っていると仮定します)。また、コードもありません。 – tambre

+0

@tambre私はメイクファイルを何回もクロスチェックしました。私はそれに欠陥がないと確信しています。あなたの便宜のために、私はコードを添付しました。それを通り抜けてください。 –

+3

何も問題がないと思っても、それを添付することをお勧めします。 何が起きているのかを理解するのに役立ちます。さて、 '/ lib/modules/3.8.13-bone70/build'ディレクトリは存在しますか? – tambre

答えて

3

のためのヘッダー。

代わりに自分のルールで直接unameを呼び出すので、それはあなたがオーバーライドできる変数にそれを置くために便利です:

obj-m+=Hello.o 

KSRC := /lib/modules/$(shell uname -r)/build 

all: 
     make -C $(KSRC) M=$(PWD) modules 
     $(CC) Hello.c -o test 
clean: 
     make -C $(KSRC) M=$(PWD) clean 
     rm test 

、あなたのカーネルヘッダの実際の位置を上書きすることができます:

make KSRC=/usr/src/linux-headers-4.9.2 all 

あなたはキャッチオールのルールでさらにMakefileを簡素化することができます。

obj-m+=Hello.o 

KSRC := /lib/modules/$(shell uname -r)/build 

all: modules 
     $(CC) Hello.c -o test 

%: 
     make -C $(KSRC) M=$(PWD) [email protected] 

clean:: 
     make -C $(KSRC) M=$(PWD) clean 
     $(RM) test 
+0

残念ながら、/ usr/srcの中にlinux-headers-xxxというフォルダはありません。これを解決するには、 'linuxヘッダー'をインストールするだけです。しかし、私はインターネット接続なしでそれを行うことはできません。回避策はありますか? –

+0

作成したいバージョンのヘッダーの場所を知る必要があります。今すぐあなたのためにそれらを見つけるためにできることはあまりありません。 –

+0

ヘッダーを検索するコマンドはありますか?ハマった。私はさらに進まない。 –

関連する問題