1、本机搭建Linux开发环境为Vmware workstation 12 player + ubuntukylin-16.04-desktop-amd64,GCC编译器,Vim文本编辑器。
2、Vim编译器句法:
vim 命令模式:<大写字母=shift+小写字母>
esc-返回命令模式 :wq!-保存并强行退出 :set number-显示行号
i-当前光标前面插入字符 I<大写>-行首插入字符
a-当前光标后面插入字符 A<大写>-行尾插入字符
o-当前光标下一行插入字符 O<大写>-当前光标上一行插入字符
x-向右<后>删除字符 X<大写>-向左<前>删除字符
dd-剪切一整行 yy-复制一整行
ddn-光标所在行开始剪切n行 yyn-光标所在行开始复制n行
p-粘贴上面剪切或复制的行到光标所在行的下面 P<大写>-粘贴上面剪切或复制的行到光标所在行的上面
sp max.c(新建文件) 【将界面区分为上下两屏进行编码】 CTRL+W+上下方向键->切换 【上下两屏间切换】
3、gcc编译: gcc -g -c filename.c -o filename
-g为了调试用的
加个-g 是为了gdb 用,不然gdb用不到
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
一般语法:
gcc filename.c -o filename
上面的意思是如果你不打 -o filename 那么默认就是输出filemame.out.这个-o就是用来控制输出文件的。
-c 只编译不链接,产生.o文件,就是obj文件,不产生执行文件。(机器码)
4、gcc的编译流程分为4步:
预处理(Pre-Processing) -> 编译(Compling) -> 汇编(Assembling) -> 连接(Linking)
预处理:处理#include、#define、#ifdef 等宏命令
编译:把预处理完的文件编译为汇编程序.s
汇编:把汇编程序.s编译为.o二进制文件
链接:把多个二进制文件.o集合(链接)成一个可执行文件
5、 将不会再进行修改的那些函数;公共框架;公共类等,优先进行编译成为静态库。而只将需要经常修改的,即业务逻辑部分生成可执行代码,只需要重新编译这个部分。
6、make命令:在Linux和unix中非常重要,可以将大型的开发项目分解成诺干个模块,使用make工具可以很清晰和很便捷对几百上千个源文件进行整理。make内部也是使用的gcc。
7、main函数中,return 0:0代表可以正确返回并执行;
&&:逻辑与 【gcc main.c -o main.out && ./main.out】
8、int main( int argc, char * argv[] ) argc获得文件名本身 + 输入字符的 总个数; argv[] 记录字符串。
常用于Linux小工具开发、Linux嵌入式开发、Linux网络程序开发
9、Linux标准输入流、输出流、错误流:【0:stdin;1:stdout;2: stderr】
stdin 默认屏幕
stdout 默认键盘
stderr
linux把所有东西当作文件处理
printf("") 是对fprintf(stdout,"")函数的封装.
scanf("") 是对fscanf(stdin,"")函数的封装
10、标准输入流 0; 标准输出流 1。&>(覆盖)&>>(追加)。
11、管道:ls /etc/ | grep ab //查看etc目录下含有ab 字符的文件
ps -e 查看进程