Debian メイクファイルを FreeBSD に変換

Debian メイクファイルを FreeBSD に変換

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

関連情報