将 Debian Makefile 转换为 FreeBSD

将 Debian Makefile 转换为 FreeBSD

我正在尝试按照指南在 FreeBSD 中编译 Debian 程序。我有以下 makefile:

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

我很困惑如何在 FreeBSD 上编译它,因为我的/lib/modules机器上没有文件夹。我已经在目录中安装了 FreeBSD 上的所有默认标头,/usr/src/但找不到模块文件夹。我猜想需要为 FreeBSD 翻译 Makefile,尽管我对 Linux 很陌生,所以我不知道。任何帮助深表感谢。

答案1

这看起来可能来自 Linux 内核模块。您可能无法在 FreeBSD 上编译或使用与 Linux 内核模块相关的代码,因为它是专门为 Linux 编写的,而 Linux 内核与 FreeBSD 内核完全不同。

简而言之,需要翻译的不是 Makefile,而是需要移植到 FreeBSD 的内核模块源代码。这不是一项简单的任务,需要了解 Linux 和 FreeBSD 内核。

也可以看看Linux 和(免费)BSD 内核之间的概念差异

答案2

为了完整起见,将$(shell ...)本例中的构造转换为 bmake 可以理解的内容的最简单方法是将其替换为由 shell 而不是 make 解释的子 shell。特别是,你可以替换

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

clean:
    make -C /lib/modules/$$(uname -r)/build M=$(PWD) clean

相关内容