而静态编译则直接编译进内核,系统启动的时候会自动加载该驱动。
静态编译太多驱动至内核,会导致内核体积过大,启动时间较长。而动态编译则比较自由灵活,需要用的时候即加载,不需要的时候即卸载。我以前在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 系统时才能够减少出错的机会。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)