我正在尝试按照指南在 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 内核。
答案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