4、vim使用
命令行:yy复制 p粘贴 dd删除 u恢复上一行
底行模式:查找/str?str
替换:行号或者%s/old/new/gc %s/sum/result/g
编辑多个文件:vim文件1 文件2 文件3
跳转:n文件名
文件保存:w r
sp+名 多文件编写
原生态:vim gedit
优秀第三方编辑:subline notepad++ vscode
IDE:QtCreater vs2019;
gcc常用编译选型
编译器gcc
1 gcc概述:GUN计划提供的编译器(unix cc编译器)编译工具链(g++ ld ldfd… )(交叉编译工具链)
2 交叉编译
a\源文件到可执行文件经历哪几个步骤?预处理,编译,汇编,链接
b\预处理任务:头文件展开(#include)、宏替换(#define)、条件编译(#ifdef) (处理#开头的代码)
c\编译的任务:检查语法,转成汇编,生成汇编文件(.s/.S)
d\汇编的任务:编译汇编文件,生成目标文件(.o)
e\链接的任务:链接所有的目标文件,生成符号表,生成可执行文件
pc端 x86处理器->可执行文件 宿主机
|
|交叉编译(要使用交叉编译器):在宿主机下编译出在目标机下运行的代码的过程;
|在当前CPU平台下编译出在其他CPU平台运行的代码的过程
|
p50(手机端) arm处理器 arm汇编 目标机
3、编译选项
-o:可执行重命名:elf格式
ELF:可执行连接文件格式。
ELF文件优点:
-
支持不同平台上的交叉编译和交叉链接,可移植性性强(与Linux下其他可执行文件(a.out,cof)相比)
-
在执行时支持动态链接共享库
ELF文件类型:
- 可重定位文件:用户和其他目标文件一起创建可执行文件或者共享目标文件,例如lib*.a文件
2.可执行文件:用于生成进程映像,载入内存执行,例如编译好的可执行文件a.out。
3.可执行文件:用于生成进程映像,载入内存执行,例如编译好的可执行文件a.out。
ELF文件特特点:
1.平台相关: 在ELF 文件头中包含了足够的平台相关信息,如数据编码方式,平台位数,硬件平台e_machine等,这些平台相关信息可在编译由编译器决定。
2.PIC:.ELF可以生成一种特殊的代码——与位置无关的代码(position-independent code,PIC)。
3.强大的工具支持 :由于gnu有大量的工具支 持elf文件格式.随着gnu工具的功能的扩展.程序员对ELF文件的运用也越来越灵活。
-E(编译器只进行预处理) -I 指定头文件的第三方搜索路径
-S(进行编译阶段) -c 进行汇编阶段
#include<stdio.h>和#include"stdio.h"区别:搜索路径不同:<>搜索路径在系统的头文件目录搜索(/usr/include),若没有,则报错;“ ”现在当前目录查找,若没有,再到系统头文件目录查找,若没有,则报错。
规范:<>一般包含系统头文件,“ ”包含自定义头文件
-O1 -O2 -O3 编译优化
-w -Wall 开关警告信息