项目名称 | 【苏嵌实训-嵌入式linuxC第2天】 |
---|---|
今日进度以及任务 | 今天学习了编译器-gcc;调试器-gdb;工程管理器make |
本日任务完成情况 | 学会了编译器的一些操作命令;如何用调试器去调试代码;工程管理器的应用 |
本日开发中出现的问题汇总 | 静态库和动态库的创建不是特别理解,不过可以听视频回放 |
本日未解决的问题 | 对make工程管理器运用不是很熟练 |
本日开发收获 | 一些基本概念及静态库动态库的创建 |
其他 | 自学了CMake |
1、交叉编译?为什么需要交叉编译?
2、源文件到可执行文件经理那几个步骤?每个步骤具体完成了哪些工作?
预处理、编译、汇编、链接
《#include<stdio.h>VS#include"stdio.h"》
头文件的搜索路径不同:<>:仅在系统的头文件目录搜索
“”先在当前目录查找,找不到再到系统的头文件目录查找
gcc -w 关警告
gcc -Wall 开警告
3、编译器三级优化分别优化了哪些?
编译器优化:-O -O2 -O3
vim computer.c
gcc computer.c -o computer
time ./comuter
gcc -o1 computer.c -o computer1
time ./computer1
gcc -o2 computer.c -ocomputer2
time ./computer2
gcc -o3 computer.c -ocomputer3
time ./computer3
第一级别优化了:代码调整,提供基础级别的优化
第二级别优化了:提供更加高级的代码优化,会占用更长的编译时间
第三级别优化了:提供最高级的代码优化
4、库文件的作用?什么是静态库和动态库?使用静态库和使用动态库生成的可执行文件的区别或优缺点?
5、总结gcc静态库和动态库的制作;
6、总结CMake用法;
7、调试器-gdb用法 run 运行 list显示源码 gdb demo --tui break 17 next print info break delete 1(num) layout asm layout src layout split break 17 if i=10 break func step单步执行可以进到函数里面去 continue