特別なファイルをインクルードしたいカーネルモジュールがあります。ファイルは ASM ファイルです。それについて特別なことは何もありませんが、ファイル拡張子も「.asm」であり、gcc によって認識されません。移植性のために名前を変更することは避けたいと思います。(別の非 GNU コンパイラでも使用されています。)
通常、私のメイクファイルは次のようになります。
obj-m := chardev.o
chardev-objs := chardev2.o file2.o asm_test.o
all:
make -C $(uClinux_dist_path) M=$$PWD modules
clean:
make -C $(uClinux_dist_path) M=$$PWD clean
「asm_test.asm」という名前の asm_test が問題です。(「asm_test.S」という名前で動作します。)
私のユーザー空間プログラムでは、次のルールを挿入することでこれを解決できます。
asm_test.o:
$(CC) -c -x assembler-with-cpp asm_test.asm
しかし、それはカーネルのメイクファイルでは機能しないようです。
カーネルのメイクファイルで特別なファイル規則を作成する方法を知っている人はいますか?
ところで、私はクロス コンパイルされた Blackfin uClinux dist を使用しています。それが違いを生むなら。