|
项目名称 | 【苏嵌实训-嵌入式 linuxC 第1天】 |
---|---|
今日进度以及任务 | 作业 1、编译器三级优化分别优化了什么?2、总结gcc静态库和动态库的制作?3、总结cmake的用法 |
本日任务完成情况(详细说明本日任务是否按计划完成,开发的代码量 | 创建了动态库和静态库,自学了cmake的使用 |
本日开发中出现的问题汇总 | 在学习动态库静态库的建立时很多指令不熟,反复看了几遍视频才学会,还有就指令问题,依旧不是特别熟练 |
本日未解决的问题 | 无 |
本日开发收获 | 学习了动态库静态库的使用,并了解了从源文件到可执行文件的过程,学习了gcc,gdb,cmake等开发工具 |
其他 | 老师讲课速度有点快,不能很好的跟上老师的节奏 |
作业:
1、编译器三级优化分别优化了什么?
第一级:代码调整
代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题;语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级;
第二级:新的视角
新的视角强调的重点是针对问题的算法;即选择和构造适合于问题的算法;
第三级:表驱动状态机
将问题抽象为另一种等价的数学模型或假想机器模型,比如构造出某种表驱动状态
2、总结gcc静态库和动态库的制作?
.静态库:
生成test.o目标文件,使用gcc -c test.c -o test.o命令,使用ar将test.o打包成libtest.a静态库,使用ar rcs -o libtest.a test.o命令
动态库:生成test.o目标文件,使用-shared参数生成动态库
总结cmake的用法
CMakeLists.txt文件内容如下:
cmake_minimum_required(VERSION 2.8)
project (hello)
add_executable(hello hello.c)
注释:
这个示例中我们只有一个源文件hello.c,目标是生成一个hello的可执行文件。运行
cmake .后生成Makefile文件,. 代表CMakeLists.txt在当前目录下,再make即可生成hello的可执行文件。
第一行用于指定cmake最低版本。
第二行指定项目名称。
第三行指定编译一个可执行文件,hello是第一个参数,表示生成可执行文件的文件名,第二个参数hello.c则用于指定源文件。
包含目录的使用:
cmake_minimum_required(VERSION 2.8)
project (hello)
include_directories(inc)
set(SOURCES src/hello.c)
#file(GLOB SOURCES “src/*.c”)
add_executable(hello ${SOURCES})
注释:
当前工程目录结构为:
├── CMakeLists.txt
├── inc
├──└─ hello.h
├── src
├──└─hello.c
使用include_directories() 包含头文件目录。
使用set(SOURCES … ) 或GLOB (or GLOB_RECURSE) 设置变量SOURCES。
add_executable 使用变量SOURCES ,而不是具体的文件名