2012-01-08 11 views
0

私は自分のUbuntuソースコードに追加したいくつかのカーネルモジュールをビルドしようとしています。コンパイルに失敗した後、同じエラーが別の場所で起きていることが分かりました。コンパイラは、フォルダのインクルードディレクトリにある一連のヘッダを見つけることができません。カーネルソースのmakefileにインクルードディレクトリを追加するにはどうしたらいいですか?

E.X。

メインフォルダ:ドライバ/ SCST/

サブフォルダ:ドライバ/ SCST/

どのように私は、フォルダを含めること追加することができますが含まれます:ドライバ/ SCST/iscsiの-SCST/

は、フォルダを含めますメイクファイル?

ここにmakefileがあります。

ccflags-y += -Wno-unused-parameter 

scst-y  += scst_main.o 
scst-y  += scst_pres.o 
scst-y  += scst_targ.o 
scst-y  += scst_lib.o 
scst-y  += scst_sysfs.o 
scst-y  += scst_mem.o 
scst-y  += scst_tg.o 
scst-y  += scst_debug.o 

obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ 

私はカーネルソースでは動作していない1つのように「正常な」メイクファイルでそれを行う方法の約50%確信しているが、どのように私は上記のようなものでそれを行うことができますか?

ありがとうございます。

答えて

0

ドライバコードのコンベンションは、特定のドライバのインクルードファイルをドライバと同じディレクトリに挿入し、#include "header.h"としてインクルードすることです。しかし、自分のやりたいことがある場合は、-I gccのオプションを使用してください。-Idrivers/scst/includeのように見えるかもしれませんし、ccflagsに追加する必要があります。注:このパスは、編集中のMakefileの場所によって変わることがあります。

+0

私は本当に正しい方法を持っていない、私はちょうどこの事を正しくコンパイルするようにしようとしています。だからあなたは、 "インクルード"ファイルの内容をそれらを必要とするディレクトリにコピーすべきだと言っているのですか? – ianc1215

+0

はい、ドライバで使用されるヘッダーは一般にドライバ固有であり、ドライバでのみ使用される場合は同じディレクトリに追加するという標準的な規則があるためです。一般的なカーネルロジックで使用されている場合は、include/linuxに入り、そのアーキテクチャが特定のもので複数の場所で使用されている場合include/asm –

+0

ビルド中のすべてのモジュールSCSTモジュールにこれらのヘッダが必要な場合は、/linuxの権利は、archに固有なものではないので?彼らはこのプロジェクトでのみ使用されていますが? – ianc1215

関連する問題