要在 Linux 上编译应用程序,涉及的步骤是:
Pre-processing->Compilation->Assembly->Linking.
编译内核驱动程序涉及哪些步骤?如果我将驱动程序编译为内置模块与模块与使用自定义 Makefile
相比,步骤是否不同?
最佳答案
Linux 中的设备驱动程序遵循相同的正确步骤:-
预处理->编译->组装->链接
这些是无论在哪里都需要遵循的基本步骤。
关于内置模块与模块与使用自定义 Makefile::-
设备驱动程序可以与整个内核一起编译,设备驱动程序是内核镜像的一部分,意味着设备驱动程序与内核静态链接。当设备驱动程序与内核静态链接并在启动时加载。
当设备驱动程序被编译为模块时,这个模块就不是内核镜像的一部分,可以动态加载到系统中。
当设备驱动程序是内核镜像的一部分时,该设备驱动程序源文件编译为内核源代码树的普通文件。
例如 sample.c 有设备驱动程序代码和 CONFIG_SAMPLE 配置宏来控制它的编译,然后在 Makefile 中包含以下行
Config-($CONFIG_SAMPLE) = sample.o
当 config 宏的值为 y 时,驱动程序使用内核镜像进行编译,当其值为 n then 时,设备驱动程序不被编译。
可以使用以下命令将设备驱动程序编译为一个模块。
make -C path/of/kernel path/of/driver/in/kernel/folder/module.ko
关于linux - 编译linux驱动的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34448707/