FreeBSDでDebianプログラムをコンパイルするためのガイドに従ってください。次のメイクファイルがあります。
obj-m += kernelinfo.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
/lib/modules
私のコンピュータにフォルダがないので、FreeBSDでこれをコンパイルする方法は混乱しています。 FreeBSDのすべてのデフォルトヘッダーをディレクトリにインストールしましたが、モジュールフォルダが/usr/src/
見つかりませんでした。 MakefileをFreeBSD用に翻訳する必要があるようです。私は私がLinuxに初めて触れる人だとはよくわかりません。どんな助けでも大変感謝します。
答え1
これはLinuxカーネルモジュールから出てくるようです。 Linuxカーネルモジュールに関連するコードはLinux用に特別に書かれているため、FreeBSDでコンパイルまたは使用できない可能性があり、LinuxカーネルはFreeBSDカーネルとはまったく異なります。
簡単に言えば、翻訳するのはMakefileではなく、FreeBSDに移植する必要があるカーネルモジュールのソースコードです。これは簡単な作業ではなく、LinuxおよびFreeBSDカーネルの知識が必要です。
また、見ることができますLinuxと(無料)BSDカーネルの概念的な違い
答え2
完全性のために、$(shell ...)
この例の構成をbmakeが理解できるものに変換する最も簡単な方法は、makeではなくシェルによって解釈されるサブシェルに置き換えることです。特に、次のように交換できます。
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
そして
clean:
make -C /lib/modules/$$(uname -r)/build M=$(PWD) clean