项目名称: 未拟定
本人进度计划以及任务:嵌入式Linux开发工具-gcc、gdb、make
本日任务完成情况 (详细说明本日任务是否按 计划完成,开发的代码量): 认真学习了这些重要的工具。
本日开发中出现的问题汇总:
Q1:何为编译器的三级优化,且三级优化有哪些?
第一级:代码调整
代码调整是一种局部的思维方式;基本不触及算法层级;仅面向代码,包含:语句调整,汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等。
第二级:新的视角
新的视角强调对问题的算法;即选择和构造适合于问题的算法;例如冒泡排序和快排的选择;经典算法对问题作了一些假设,在面对实际问题时“新的视角”提示我们应该重新检视这些假设,并尝试不同的思考问题的角度,寻求适合于问题的新算法。
第三级:表驱动状态机
这一级已经将问题抽象为另一种等价的数学模型或假想机器模型,比如构造出某种表驱动状态机;这一级其实是第二级的延伸,只是产生的效果更加明显,但它有其本身的特点(任何算法和优化活动都可以看作是他的投影);既:把解决一个问题的算法看作一个机器,它有一些可变的状态、有一些记忆、有一些按状态运行的规则,然后一些输入驱动这个机器运转;这就是第三级要求的思考优化问题的切入点,也就是寻找一部机器,使它运行经过的路径最短(可能是速度也可能是空间等等)
Q2:总结gcc静态库和动态库的制作.
(1)静态库的制作
首先写源代码:vim add.c
之后编译成目标文件:gcc -c add.c
生成静态库:ar rcs libadd.a add.o(libadd.a中add为库命,其他为前后缀)
使用静态库,并加上链接:gcc main.c -ladd -L. -o main(-l指定库,-L指定库的路径)
(2)动态库的制作
命令:gcc -shared -fPIC add.c -o libadd.so
使用需要加上路径:gcc main.c ./libadd.so -o main
Q3:总结CMake的使用方法.
下载gz包,解压:tar -zxvf cmake-3.10.2.tar.gz
1.流程
- 编写 CmakeLists.txt。
- 执行命令“cmake PATH”或者“ccmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。
- 使用 make 命令进行编译。
2.编写源文件main.c;再编写CmakeList.txt
3.命令:cmake ;可得到makefile文件,即可make编译了。
本日未解决问题:gcc编译找不到位置