<分区>
我正在运行 Ubuntu 12.04,并且我假设我在运行 ls/dev
时看到的所有列出的项目实际上是所有设备/硬件组件的设备驱动程序连接到(或能够连接到)我的机器。它是否正确?如果没有,Linux 将所有设备驱动程序存储在哪里?
驱动程序是用什么写的,C? C++?汇编程序?设备驱动程序开发人员使用哪些现代 IDE/技术栈?
<分区>
我正在运行 Ubuntu 12.04,并且我假设我在运行 ls/dev
时看到的所有列出的项目实际上是所有设备/硬件组件的设备驱动程序连接到(或能够连接到)我的机器。它是否正确?如果没有,Linux 将所有设备驱动程序存储在哪里?
驱动程序是用什么写的,C? C++?汇编程序?设备驱动程序开发人员使用哪些现代 IDE/技术栈?
最佳答案
不,你错了。 /dev
是一个充满特殊设备文件的文件夹,代表设备驱动程序。因此,当我对 /dev/sda
执行某些操作时,我不是在处理 SATA 驱动程序的文件,而是在处理恰好加载的任何 SATA 驱动程序的接口(interface)。设备文件是驱动程序将其设备公开给用户空间的方式(以及调用驱动程序的系统调用)。
通常驱动程序存储在/lib/modules
。
驱动程序是用 C 编写的,除非您想增加三倍的工作量并用汇编编写。出于技术和政治原因,整个 Linux 内核中没有一行 C++(Linus Torvalds 讨厌看到它)。
开发环境?我怀疑任何内核开发人员都使用 IDE。他们中的大多数只使用 Vim 或 EMACS。然后 git 提交到内核源代码,GDB/KDB 进行调试。以及任何其他需要的命令行工具(例如 diff
)。
关于Linux设备驱动开发: what does it look like in 2012?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780213/