2.26 嵌入式Linux的使用、开发工具vim gcc

2019-07-13 02:03发布

2.26.2019

相对路径:从当前目录开始(不以斜杠开始) 绝对路径:从根目录开始的路径 Linux是多用户操作系统,多个用户可以同时登陆不同用户权限不同(root用户权限最大) Linux还有用户组(一个组包含多个用户) Linux每个文件都有权属标志(共3种:读r、写w、可执行x没有用-表示),每个文件都有三组权限标志(所属用户u、所属组g、其他用户o) 文件的权属标志可以用ls -l来查看: 结果第1列表示文件类型,2-4列表示3种权限,第5列表示引用计数(当前有几人在用),6-7各表示所属用户和所属组,8列表示文件大小,9表示修改日期,10表示文件名 Linux常用命令: Man查阅linux上的手册页,用法:man[n]item  n为1-8 (3表示函数调用)之后用q键退出 Chgrp[组的名称][目录、文件](后面的改到前面中)  chown[用户名][文件、目录](后面的改到前面中)    Chmod(用来修改权限) 方法一:chmod[-R]4位数字(o***表示权限)[要修改的文件、目录] 方法二:chmod[u/g/o/a][+/-/=][x/r/w][要修改的文件、目录] 目录处理命令:   Cd: 改变当前目录 如cd  /etc   Pwd:显示当前工作目录   mkdir: 创建目录 如:mkdir a 、mkdir -p  a/b/c rmdir: 删除空目录   rm -rf[文件、目录](删除文件中所有内容) 文件目录管理命令:   ls:列表方式显示当前目录及字目录  加了-l详细显示 加-a显示隐藏文件   cp:[-f(同名替换) -i(同名询问) -r(递归方式) -u(更新)][源文件][目标]复制   mv (移动或者改名)   rm(删除) 查看文件内容: Cat(一次性从头开始显示)  tac(一次性从后往前显示) More(按页显示空格往后一页 回车下一行)   less(可以往前翻) :/字符串(往后查找字符串)   Head:[-n] 文件名   tail[-n]文件名    head -n20 tem|tail -n10 tem显示tem10-20行内容 Find 路径 -name 文件(文件可以用文件开头名加*) Tar Clear 清屏 ifconfig查看网络及设置

文本编辑器Vim

vim编辑器   三种工作模式:         命令行模式(一般模式),插入模式(编辑模式),底行模式(命令列模式)   1.vim hello.c 2.命令模式到编辑模式 i 3.编辑 4.编辑模式到命令模式 esc 5.命令模式到底行模式 :   编辑模式到底行模式 shift+: 6.在底行模式下键入w:保存 q:退出     在命令行模式下功能键 yy:复制光标所在行 [n]yy:复制当前光标开始的n行 p:粘贴复制到所在光标行 dd:剪切当前光标所在行 [n]dd:剪切当前光标开始的n行 /name:查找光标之后名为name的字符串 x往后查找下一个 X往前查找下一个 G:光标移动到文件尾 u:取消前一个动作 d1g:删除光标所在行到第一行的所有数据 dg:删除光标所在行到末行的所有数据 n1,n2 s/word1|word2/g 在n1和n2行间查找word1并替换为word2,也可以把”/”换成”#”                     gc 询问是否删除 1,$                   全文替换 %       底行模式功能键 :w 保存 :q 退出(系统提示是否保存) :q! 强行退出 :wq 保存后退出 :w[filename] 另存为filename的文件 :set nu 显示行号 :set nonu 取消行号 :!命令 不退出vim编辑器,继续执行命令 可同时打开多个文件,显示第一个文件 :n 切换到第二个文件 :N 往前切换文件 :files 显示打开的所有文件名 :sp+文件名 分屏显示   ctrl+w+w 上下切换 ctrl+w+j 向下切换 ctrl+w+k 向上切换   v 从光标往后选择 V 选择光标整行 ctrl+v 块选择

gcc编译器

  GNU cc(简称gcc) gcc能够检测出语法错误,功能性错误是难题   C语言从源代码到可执行程序的过程:         预处理、编译、汇编、链接 四个步骤做什么? 预处理:1.头文件展开 2.宏定义处理(+#的标识符都是在预处理阶段做的)3.条件编译   预处理阶段只写简单宏,因为编译器预处理阶段宏定义处理,宏定义处理不检查语法错误,但有些函数可定义在宏中,减少内存占用   gcc 文件名 -D[条件表达式]外部定义宏 gcc [-wall][-01....3][-o name][>](重定向保存,功能等同于-o) file gcc -E hello.c -o hello.i -E 控制预处理 -S 编译生成汇编文件,会检查语法错误 -o 输出的文件名,不设置,gcc给出预设的可执行文件a.out gcc -c hello.c                 ls hello.c hello.i hello.s -c 只编译,不连接成为可执行文件 -g 产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须要加入这个选项 gcc -g hello.c -o hello.out -O 对程序进行优化编译,链接。可执行文件的执行效率可以提高,但是,编译连接的速度就要相应减慢 -O2 比-O更好的优化编译、连接,但速度慢。 -Idirname 将dirname所指出的目录加入到程序头文件目录列表中 -Ldirname 将dirname所指出的目录加入到库文件目录列表中 -lname 在连接时装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下         例:-lm表示连接名为libm.a的库     .a 静态库 库和文件拼在一起,文件会变大 .so 动态库 建立与库的映射关系   静态库的创建 1.gcc -c 源文件.c 2.ar rcs 静态库名(libmycal.a) 目标文件1 目标文件2 3.gcc main.c -o main -L. -lmycal 搜索路径:gcc main.c -ladd -L. -L/root/0228   动态库的创建 gcc -shared -fPIC -o 库名.so 源文件.c 动态库的使用 gcc 源文件 ./库名.so -o 可执行文件名   gcc警告和出错选项: -ansi 强制gcc生成标准语法所要求的警告信息,不提示数据类型错误 -pedantic 打印ANSIC 标准列出的全部警告信息,能查出无效数据类型错误 -Wall 打印gcc能够提供的所有有用的警报信息,能找出未使用变量,但不能找出无效数据类型的错误