对于要在Linux上编译的应用程序,涉及的步骤是:
Pre-processing->Compilation->Assembly->Linking.
编译内核驱动程序涉及哪些步骤?如果我将驱动程序编译为内置模块而不是使用自定义Makefile
编译模块,那么步骤会有所不同吗?
答案 0 :(得分:1)
Linux中的设备驱动程序遵循相同的步骤: -
预处理 - >编译 - >汇编 - >链接。
这些是每个地方都需要遵循的基本步骤,无论如何跟随。
关于内置模块vs模块vs使用自定义Makefile :: -
设备驱动程序可以用整个内核编译而设备驱动程序是内核映像的一部分意味着设备驱动程序与内核静态链接。当设备驱动程序与内核静态链接并且在启动时加载它。
当设备驱动程序编译为模块时,该模块不是内核映像的一部分,可以即时加载到系统中。
当设备驱动程序是内核映像的一部分时,此设备驱动程序源文件被编译为内核源代码树的普通文件。
例如,sample.c有设备驱动程序代码,CONFIG_SAMPLE配置宏控制其编译,然后在Makefile中包含以下行
make -C path/of/kernel path/of/driver/in/kernel/folder/module.ko
当config宏的值为y时,驱动程序将使用内核映像进行编译,当其值为n时,则设备驱动程序不会被编译。
可以使用以下命令编译作为模块的设备驱动程序。
camera.addCallbackBuffer()