您的位置:首页 > 其它

苏嵌嵌入式学习第三天

2020-07-14 06:34 106 查看

1 编译器三级优化

-O 提供基础级别的优化
-O2 提供更加高级的代码优化,会占用更长的编译时间
-O3 提供最高级的代码优化

第一级:代码调整
代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题; 所以:语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级;
这个级别的优化需要掌握大量的小的优化技巧和知识,需要不断的积累

第二级:新的视角
新的视角强调的重点是针对问题的算法;即选择和构造适合于问题的算法;(冒泡排序还是快排的选择问题是这一级早就应该完成的)很多经典算法都对问题作了一些假设(包括我们当前已经完成的算法实现),而在面对实际问题时“新的视角”提示我们应该重新检视这些假设,并尝试不同的思考问题的角度,寻求适合于问题的新算法;
发掘问题的本来意义,从不同的角度思考面对的问题,使用适合于问题的的算法; 尝试打破一些规则,发掘和怀疑自己的某些假定,恢复问题的本来面目

第三级:表驱动状态机
将问题抽象为另一种等价的数学模型或假想机器模型,比如构造出某种表驱动状态机;这一级其实是第二级的延伸,只是产生的效果更加明显,但它有其本身的特点(任何算法和优化活动都可以看作是他的投影);这一级一般可以产生无与伦比的快速程序, 要达到这一级需要大量修炼的;并且思考时必须放弃很多已有的概念或者这些概念不再重要,比如:变量、指针、空间、函数、对象等,剩下的只应该是那个表驱动状态机; 我想把这种境界描述为:空寂中,一些输入驱动着一个带有状态的机器按设定好的最短路线运转着;除此之外have nothing; 既:把解决一个问题的算法看作一个机器,它有一些可变的状态、有一些记忆、有一些按状态运行的规则,然后一些输入驱动这个机器运转;这就是第三级要求的思考优化问题的切入点,也就是寻找一部机器,使它运行经过的路径最短(可能是速度也可能是空间等等)

2关于静态库与动态库的总结

1 首先,为什么要用库
保密:别人想使用你的代码功能,但你不想让别人看见代码细节
方便:只需要知道库文件函数接口,就可以方便使用其功能,不用知道具体细节
说明书:头文件相当于说明书,库函数使用信息基本都可以找到

2 区别
linux
静态库文件为.a文件
动态库文件为.so文件,后面可能跟数字,表明库版本
两者区别
静态库在编译阶段,会加载到程序内部
动态库在程序运行时才会被加载

静态库的制作
命名规则

前缀lib
库名
后缀.a
完整形式 libxxx.a
制作步骤

原材料:.c .cpp
将c文件生成.o
gcc -c xxx.c
将.o打包
ar rcs 静态库的名字 原材料
ar rcs libxxx.a *.o

动态库的制作

命名规则

libxxx.so

libxxx.so.n.n.n(n代表数字表示版本)

制作步骤

源文件生成.o
gcc -c *.c -fpic或(fPIC)

打包成动态库
gcc -shared -o libxxx.so *.o(第一步生成的.o文件)

3 make等的使用

对make的使用主要还是对makefile的编辑以及使用。
我们讲一个简单一点的例子,我们创建一个706的目录并进入,再接着在706创建一个jj_make的目录

[root@localhost 桌面]# cd 706
[root@localhost 706]# cd jj_make

建立一个hello.c文件:

1 #include<stdio.h>
2
3 int main()
4
5 {
6 printf(“hello\n”);
7 return 0;
8 }

接着建立一个makefile的文件:

1 hello:hello.o
2 gcc hello.c -o hello
3 hello.o:hello.c
4 gcc -c hello.c

之后输入make:

[root@localhost jj_make]# make
gcc -c hello.c
gcc hello.c -o hello

运行成功。

这里还有新的内容,当我们之后输入:

[root@localhost jj_make]# make hello.o

会出现:

make: “hello.o”是最新的。

这里是因为,make在执行的时候,会检测我们写好的makefile文件是否更新内容,如果没有,会直接调用。

如果我们执行:

[root@localhost jj_make]# rm -f hello.o

之后:

[root@localhost jj_make]# make hello.o
gcc -c hello.c

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: