如何在 FreeBSD 中编译驱动程序

如何在 FreeBSD 中编译驱动程序

在 Ubuntu 16.04 中我可以这样做:

apt-get install build-essential git
git clone https://github.com/CristianVladescu/rtl8814AU.git
cd rtl8814AU && make && make install

在 FreeBSD 中,我尝试了这个:

  • 使用源文件安装 FreeBSD 10.3 -好的
  • pkg install git-好的
  • git clone https://github.com/CristianVladescu/rtl8814AU.git-好的
  • cd rtl8814AU-好的
  • make-失败

make:“/root/rtl8814AU/Makefile”第 137 行:缺少依赖运算符
make:“/root/rtl8814AU/Makefile”第 139 行:需要一个运算符
make:“/root/rtl8814AU/Makefile”第 141 行:缺少依赖运算符
.. .
make: "/root/rtl8814AU/Makefile" 第 1688 行:需要一个操作符
make:“/root/rtl8814AU/Makefile” 第 1692 行:需要一个操作符
make:“/root/rtl8814AU/Makefile” 第 1734 行:需要一个操作符
make : 遇到致命错误 -- 无法继续 make: 停止于 /root/rtl8814AU

  • pkg install gmake-好的
  • gmake-失败

gmake ARCH=amd64 CROSS_COMPILE= -C /lib/modules/10.3-RELEASE/build M=/root/rtl8814AU 模块
gmake[1]: *** /lib/modules/10.3-RELEASE/build: 没有这样的文件或目录。停止。
gmake: *** [Makefile:1699: 模块] 错误 2

现在我已经走进了死胡同。我不知道该用谷歌搜索什么了。

答案1

您似乎正在尝试在 FreeBSD 上编译 Linux 内核模块。

尽管 Linux 和 FreeBSD 都是类 Unix 操作系统,但它们使用的内核在许多方面都完全不同。这意味着专门为 Linux 内核编写的一段内核代码(例如内核模块)将无法在 FreeBSD 系统上编译和/或工作。

在这种情况下,了解 FreeBSD 内核及其体系结构,并且至少了解 Linux 内核的一般知识的人可能会考虑坐下来港口从 Linux 到 FreeBSD 的驱动程序。这涉及到获取驱动程序的基本工作原理并将其转换为适合 FreeBSD 内核执行等效操作的方式的内容。

这是一项需要时间和知识的事业。

由于我不熟悉该驱动程序,也不熟悉 FreeBSD,因此遗憾的是,我无法确定该驱动程序支持的设备是否已受 FreeBSD 支持。

答案2

在这个仓库中:https://github.com/diederikdehaas/rtl8814AU

有一个命令可以转换为 unix 。 '来源报价'

将所有行结尾转换为 unix。

用于执行该操作的命令是: find 。 -path ./.git -prune -o -name '*' -type f -print | -path ./.git -prune -o -name '*' -type f -print | xargs egrep -l $'\r'\$ | xargs egrep -l $'\r'\$ | xargs perl -pi -e 's/\r\n/\n/g'

这会递归地查找所有文件,但不包括“.git”目录。然后它检查是否有 dos 行结尾,如果有,则将它们转换为 unix。没有 ' | xargs perl ...' 部分,它将列出以 dos 行结尾的文件。

看起来 Realtek 终于开始学习了,这次只有几个文件:)

相关内容