项目开发日报表
苏嵌项目实训第二天任务
1.编译器三级优化了哪些?
第一级:代码调整
代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题; 所以:语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级;这个级别试图执行9种单独的优化功能,
第二级:新的视角
新的视角强调的重点是针对问题的算法;即选择和构造适合于问题的算法;(冒泡排序还是快排的选择问题是这一级早就应该完成的)很多经典算法都对问题作了一些假设(包括我们当前已经完成的算法实现),而在面对实际问题时“新的视角”提示我们应该重新检视这些假设,并尝试不同的思考问题的角度,
第三级:表驱动状态机
将问题抽象为另一种等价的数学模型或假想机器模型,比如构造出某种表驱动状态机;这一级其实是第二级的延伸,只是产生的效果更加明显,但它有其本身的特点(任何算法和优化活动都可以看作是他的投影);这一级一般可以产生无与伦比的快速程序, 要达到这一级需要大量修炼的;并且思考时必须放弃很多已有的概念或者这些概念不再重要,比如:变量、指针、空间、函数、对象等,剩下的只应该是那个表驱动状态机; 我想把这种境界描述为:空寂中,一些输入驱动着一个带有状态的机器按设定好的最短路线运转着;除此之外have nothing; 既:把解决一个问题的算法看作一个机器,它有一些可变的状态、有一些记忆、有一些按状态运行的规则,然后一些输入驱动这个机器运转;这就是第三级要求的思考优化问题的切入点,也就是寻找一部机器,使它运行经过的路径最短(可能是速度也可能是空间等等)
二,总结gcc静态库和动态库的制作;、总结gcc静态库和动态库的制作;
目录结构
图片一
文件内容
图片二
动态库制作
图片三
静态库制作
图片四
三:CMake用法总结
定义工程名:
PROJECT (MyProject [CXX] [C] [JAVA]) //默认支持所有语言
输出提示信息:
MESSAGE ([SEND_ERROR | STATUS | FATAL_ERROR] “message”)
生成可执行对象:
ADD_EXECUTABLE (MyExe ${SRC_FILES})
生成子目录下的模块或程序并放在build的相应子目录下:
ADD_SUBDIRECTORY(source_dir [binary_dir])
制定二进制目标的保存位置:
无论是否在ADD_SUBDIRECTORY中制定了编译输出目录,都可以制定最终二进制的位置
SET (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
在哪里ADD_EXECUTABLE或ADD_LIBRARY,就在哪个CMakeLists.txt中放上述的定义
设置变量:
SET (variable_name variable_value)
增加配置文件模板,用来生成源码中可用的头文件:
CONFIGURE_FILE(
“{PROJECT_BINARY_DIR}/TutorialConfig.h”
)
|
|
项目名称 | 苏嵌实训-嵌入式Linux 第二天 |
---|---|
今日进度及任务 | 了解嵌入式开发工具gcc,gdb make |
本日任务完成情况 | 基本完成 |
–本日出现的问题 | -对于这些开发工具不是特别熟悉,使用起来不够顺手,可能是以前C语言的知识不够熟悉- |
本日未解决问题 | 这些开发工具不够熟悉,了解不够深入 |
本日收获 | 对于三个开发工具有了个基本了解和掌握,对他们的作用也有了些深刻的印象 |
其他 | 需要再课下继续巩固和熟悉这些开发工具,这样才能更快的掌握和熟悉,并且有所收获 |