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

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能够提供的所有有用的警报信息,能找出未使用变量,但不能找出无效数据类型的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值