物联网工程实践实训日报表2020.7.6

项目开发日报表
项目名称 苏嵌实训-嵌入式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 支持简单的变量可以是字符串也可以是字符串列表。变量参考使用${VAR}语法。多参数可以使用set命令组合到一个列表中。所有其他的命令

通过空白分隔符传递命令来扩展列表。

(3)控制流:

像大多数语言一样,Cmake 提供了控制流结构。Cmake提供了三中控制流:

条件控制流 if

循环结构: foreach 和 while

过程定义宏和函数(函数在2.6及更高的版本中有效):函数对变量局部有效,宏是全局有效。

(4)引号,字符串和转义:

在CMake中原义字符串用双引号括起来。字符串可以是多行字符串,并在其中嵌入新的行。也可以在一个字符串中转义字符和使用变量。如果字符在引号之前是空格则原义字符串只是原义字符串,但是引号必须成对。
(5)正则表达式:

cmake可以使用正则表达式。

本日开发中出现的问题汇总

创建动态库时命令不清晰导致创建失败。

本日未解决问题Makefile语法使用的不熟悉。
本日开发收获在编译中使用自动编译以及库,可以极大地提高我们的编译效率以及减少编译时的出错,今后应加强联系和熟悉。
其他继续编写C语言代码,力求得心应手。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值