Linuxにシンプルなデバイスドライバを書いています。メイクファイルでは、通常、Linuxでのオブジェクトファイルのアドレス指定Makefile
hello
が書かれたモジュールである
obj-m += hello.o
として最初の行を書きます。私は他のメイクファイルで+=
のシンボルが:=
などに置き換えられているのを見てきました。両者の間にはどのような違いがありますか?また、可能な選択肢は何ですか?
Linuxにシンプルなデバイスドライバを書いています。メイクファイルでは、通常、Linuxでのオブジェクトファイルのアドレス指定Makefile
hello
が書かれたモジュールである
obj-m += hello.o
として最初の行を書きます。私は他のメイクファイルで+=
のシンボルが:=
などに置き換えられているのを見てきました。両者の間にはどのような違いがありますか?また、可能な選択肢は何ですか?
実際、KbuildユーザMakefileを含む前に、いくつかの他の変数(scripts/Makefile.build参照)と共にobj-m
をリセットするので、(のみhello.o
行があると仮定して)+=
と:=
割り当ての間に違いはありません。
個人的に私は割り当てを追加することをお勧めします(+=
)。これは、次のようないくつかの愚かなエラーを防ぐ:
obj-m := hello.o
obj-m := world.o
最後の行は最初のもののコピー&ペーストであり、あなたが+=
に割り当てタイプを変更することを忘れた場合は、あなただけworld.o
はなし(コンパイルさよhello.o
)。
また、how to write module makefilesに関するKbuildのドキュメントを読むことをお勧めします。
とった。どうもありがとうございました。何か疑念が浮かび上がるなら、戻ってくるだろう。 – elyon
'make'プログラムのドキュメントを読むと、':= 'や' + = 'の意味がmakeファイル内で何を意味するのかが正確に分かります。例えば、[GNU Make manual](http://www.gnu.org/software/make/manual/)を参照してください。 –
確かにそれを通過します。ありがとうございました。 – elyon