問題タブ [kbuild]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1788 参照

c - 大規模な C ソフトウェアを構成/記述するための Kconfig (カーネル構成言語) の代替

大規模な C システムの構成/構築に興味があります...

Linux カーネルはKconfig言語を使用して、さまざまな構成オプション (CONFIG_X として定義されたマクロ) とその依存関係を記述します...基本的に、各ディレクトリには、このサブシステムで定義された構成オプションを含む Kconfig ファイルがあります...

Apache や *-BSD などの大規模な C システムで構成オプションを説明するための代替手段はありますか? 人々は一般的に何を使用しますか? ベストプラクティスは何ですか?

0 投票する
3 に答える
38399 参照

linux - makeを使用してC99としてコンパイルする方法は?

Makefileを使用してLinuxカーネルモジュールをコンパイルしようとしています。

それは私に与えます:

C99に切り替える必要があります。読んだ後、フラグ-std = c99を追加する必要があることに気付きましたが、どこに追加するのかわかりません。

Makefileを変更してC99としてコンパイルするにはどうすればよいですか?

0 投票する
2 に答える
4087 参照

linux-kernel - Kconfigエントリがmenuconfigに表示されないのはなぜですか?

drivers / media / video/Kconfigに次のエントリがあります。

menuconfigでVIDEO_OMAP3を検索すると、次のようになります。

ただし、me​​nuconfigオプションはありません。makefileを変更することでオブジェクトを手動でビルドすることができますが、これが大きな問題の一部ではないことを確認したいと思います。

0 投票する
6 に答える
20022 参照

makefile - ツリー外の Linux カーネル モジュールを別のオブジェクト ディレクトリにビルドする

Linux カーネル ビルド システム (Kbuild、カーネル ≥2.6.28) と、より大きなプロジェクトのディレクトリ構造とビルド システムに直面しています。私たちのプロジェクトには、ツリー外の Linux カーネル モジュールが含まれており、ディレクトリ構造は次のようになります (明らかに単純化されています)。

ビルド プロセスでは の下を変更してcheckoutはならず、モジュールのビルドでは の下を変更してはなりませんtmp/linux-2.6.xx。すべての出力ファイルは、最終的にoutput/linux-arm-debug(または、ビルド時に選択されたアーキテクチャおよびデバッグ バリアント) の下にある必要があります。

を読みkbuild/modules.txtKbuildファイルの書き込みを開始しました。

これは、オブジェクトファイルを、存在する場所とは別のディレクトリに保存することを処理しますKbuild。からfoo_common.oコンパイルする必要があることをどのように指定できますか?…/checkout/src/common/foo_common.cfoo_linux.o…/checkout/src/linux-driver/foo_linux.c

0 投票する
1 に答える
823 参照

linux - Kconfig と LKM

カーネル ツリーの外部で LKM を使用しており、MYLKM_CONFIG_{something} などのモジュールのコンパイル オプションを使用したいと考えています。これは、C の前処理 (#define // #ifdef // #endif) を使用して実行できることを知っています。しかし、その目的でKbuild(Kconfigファイルまたは関連するもの)を使用することは可能ですか?..

そしてもう1つ質問です。make menuconfigカーネルツリー全体ではなく、モジュールのみを対象にすることはできますか?

ありがとう。

0 投票する
1 に答える
1722 参照

makefile - makefile に dir を含める

Ubuntu で 1 つの C ファイルをコンパイルしていますが、ヘッダー ファイルをインクルードするとエラーが発生します。私のメイクファイルは次のとおりです。

しかしCFLAGS、makefile に with の行を含めた後でも、含まれているディレクトリに存在する、含まれていない 1 つのヘッダー ファイルに対してエラーが発生します。

他の方法はありますか? ヘッダー ファイルをメイクファイルに含めるにはどうすればよいですか?

0 投票する
2 に答える
2767 参照

linux - 宣言で:=が使用されているにもかかわらず、Makefile変数の置換が行われていないようです

他のカーネルモジュールと通信するメインカーネルモジュールがあります。私はこのようにモジュールを構成しました(概念的に):

これらはカーネルモジュールなので、次のようにコンパイルする必要があります。

ただし、ドライバのMakefileは以前のディレクトリから呼び出すことができる$(shell pwd)ため、他のmake(Linuxのmake)を呼び出す前に行う必要があります。したがって、Makefileは次のようになります。

これまでのところ問題はなく、完全に機能します。問題はこれです:私はドライバーがインクルードする必要があるファイルを持っているので、作成するインクルードパスを指定する必要があります。私は最初に試しました

そして、それが機能しない理由をすぐに理解しました(相対パスは現在のディレクトリではなく/ lib / module / ...になります)。だから私はそれを次のように変更しました:

奇妙なことに、これは機能しません!私が書いたら

手動でコンパイルします!誰かが私が間違っていることを説明できますか?makeを呼び出す前に、私はechoed$(CURRENT_DIR)$(MAIN_MODULE_HOME)変数に意味があります。

EXTRA_CFLAGSそれがすぐに評価されないことは知っていますが、CURRENT_DIRMAIN_MODULE_HOME宣言されているので、:=物事がどのように台無しになっているのかわかりません。

(誰かが質問のタイトルをよりよく表現できるなら、してください!)

0 投票する
1 に答える
229 参照

linux - Linux Makefile でのオブジェクト ファイルのアドレス指定

Linux で簡単なデバイス ドライバーを作成しています。メイクファイルでは、通常、最初の行を次のように記述します

helloモジュールはどこに書かれていますか。他のメイクファイルで、シンボル+=が置き換えられているのを見たこと:=があります。2つの重要な違いは何ですか?また、可能なオプションは何ですか?

0 投票する
2 に答える
2308 参照

linux-kernel - Kconfig の選択: 選択されていない選択が新規として表示されます

次の Kconfig コードがあります。

私の問題、make oldconfig を実行するたびに次のように表示されます。

設定ファイルを確認したところ、

選択されていないオプションが常に新規として表示される理由は何ですか?

0 投票する
3 に答える
12560 参照

linux - Linuxカーネルをコンパイルするときに出力されるCC、LD、CC [M]などのコードは何ですか?

Linuxを最初からコンパイルしていると、コンパイル中に表示されるコンパイルコードがあることに気付きました。

たとえば、CCファイル名、LDファイル名、CC[M]ファイル名。

これらのコードはどういう意味ですか?