配置Linux内核的时候,驱动的静态编译和动态编译有什么区别?

配置Linux内核的时候,驱动的静态编译和动态编译有什么区别?,第1张

驱动的动态编译会生成.ko文件,系统启动后需要加载该驱动后才能使用相应设备。

而静态编译则直接编译进内核,系统启动的时候会自动加载该驱动。

静态编译太多驱动至内核,会导致内核体积过大,启动时间较长。而动态编译则比较自由灵活,需要用的时候即加载,不需要的时候即卸载。我以前在EasyARM-iMX280的学习手册里看到写得很清楚,你可以去看看的。

我们知道若要给Linux内核添加模块(驱动)有如下两种方式: (1)动态方式:采用insmod命令来给运行中的linux加载模块。 (2)静态方式:修改linux的配置菜单,添加模块相关文件到源码对应目录

关于在 Linux 环境下面对 C 语言源程序进行静态编译,关键是要看你的 C 语言源程序中都使用到了哪些系统库函数?如果是标准的输入、输出库函数,只要在命令行提示符 $ 下面执行:

gcc my_prog.c 即可(缺省的可执行文件名是:a.out);如果在用户的源程序中使用到了数学计算函数,那么在命令行提示符 $ 下面必须执行:

gcc my_prog.c -IMATH.LIB(假设涉及到各种数学计算的数学库的库文件为:MATH.LIB)

如果不加上 -IMATH.LIB 选项,那么即使你的源程序编写得再正确,也无法正常编译。

另外还有一个必须要注意的就是:在 Linux 的环境变量中,一定要把 INCLUDE、LIB 所在的路径设置好(在 SHELL 文件中写好),这样在使用 Linux 系统时才能够减少出错的机会。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7397077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存