项目名称 | 苏嵌实训-嵌入式LinuxC第 4天 |
今日进度以及任务 | 学会使用gdb编译以及Linux中的静态动态库。 |
本日任务完成情况 | 1、gdb编译的使用、编译器三级优化。 gdb的使用方法: (1)使用命令gcc -o test -g test1.c编译出来test的可调试文件,使用gdb test进行调试; (2)print,step和run进行执行程序;可以简写为:p,s,r; (3)使用breakpoint 来设置断点,可以使用b; (4)使用quit来退出调试界面,进入到linux的主命令界面。 编译器三级优化: 第一级:代码调整 第二级:新的视角 第三级:表驱动状态机
2、总结linux中静态和动态库。 静态函数库: 这类库的名字一般是libxxx.a,xxx为库的名字。 利用静态函数库编译成的文件比较大,因为库会被整合进目标代码中,它的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会成为它的缺点,因为如果静态库改变了,那么你的程序必须重新编译,而且体积也较大。 动态函数库: 这类库的名字一般是libxxx.so,有时候也会看到一些开源库命名成libxxx.so.x.y.z,同样的xxx为库的名字,x是主版本号(Major Version Number),y是次版本号(Minor Version Number),z是发布版本号(Release Version Number)。 动态库又称共享库;相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的加载并调用,所以程序的运行环境中必须提供相应的库。动态库的改变并不影响你的程序,所以动态库的升级比较方便。而且如果多个应用程序都要使用同一函数库,动态库就非常适合,可以减小应用程序的体积。
3、CMake的用法。 (1)列表和字符串: 在CMake中基础的数据形式是字符串。CMake也支持字符串列表。 列表通过分号分隔。 (2)变量: CMake 支持简单的变量可以是字符串也可以是字符串列表。变量参考使用 通过空白分隔符传递命令来扩展列表。 (3)控制流: 像大多数语言一样,Cmake 提供了控制流结构。Cmake提供了三中控制流: 条件控制流 循环结构: 过程定义宏和函数(函数在2.6及更高的版本中有效):函数对变量局部有效,宏是全局有效。 (4)引号,字符串和转义: 在CMake中原义字符串用双引号括起来。字符串可以是多行字符串,并在其中嵌入新的行。也可以在一个字符串中转义字符和使用变量。如果字符在引号之前是空格则原义字符串只是原义字符串,但是引号必须成对。 cmake可以使用正则表达式。 |
本日开发中出现的问题汇总 | 创建动态库时命令不清晰导致创建失败。 |
本日未解决问题 | Makefile语法使用的不熟悉。 |
本日开发收获 | 在编译中使用自动编译以及库,可以极大地提高我们的编译效率以及减少编译时的出错,今后应加强联系和熟悉。 |
其他 | 继续编写C语言代码,力求得心应手。 |