- cd的使用: . 当前目录 .. 上一层目录 ~ 当前用户家目录 -前一个工作目录(前一级)
- 路径
- 相对路径:相对于自己的目标文件的位置,而建立出的目录路径,当所处位置不同时,相对路径就会发生变化。
- 绝对路径:文件在硬盘上真正存在的路径,任何人引用时所有的路径都是一样的
- 用户组概念:用户组提供了一种简单方法供一组用户互相共享文件,用户组允许系统管理员更加有效的管理用户权限,管理员可以直接把权限分配给用户组而不是逐一分配给每个用户。
- 文件管理:一些需要熟悉的命令
- chmod 777 文件名 || chmod u=rw,og=x 文件名 ( rwx(421位权) 读写执行,ugoa各种不同用户)改变文件夹下所有的文件权限 ——R
- chgrp(修改目录所属群组) chgrp -v (显示执行过程) 群组 文件名
- chown(root,变更文件关联组)
- diff(比较文件差异)
- cat(文件打印标准输出设备上)cat -n/b 文件名(n显示空行的行号,b不显示空行的行号) cat -n 文件名1 >>文件名2(1的内容加上行号输入到2的文档)可配合管道符一起使用 more less tac head tail
- more 类似于cat,不过会以一页一页的形式显示 +20 从20页开始显示
- less less可以随意浏览文件,支持翻页和搜索,
- head 用于看文件的开头部分的内容,有一个常用的参数 -n 显示几行,默认十行
- file(辨识文件类型)file -b(不显示文件名)/L(显示连接所指向文件类别) 文件名
- find(在指定目录查找文件)find 路径 -name /type 文件名 (文件名支持通配符*?:“*.c”)
- mv(改名或者将文件移入其他位置)mv 文件名1 文件名2(把文件名改成2)mv 目录1 目录2
- rm(删除)rm -i/f/r(询问/直接删除/递归删除)文件名
- touch(创建文件)
- mkdir(创建目录)
- cp(复制文件)-r(递归)test/* newtest(将test下所有文件复制到新目录newtest)
- which(在环境变量里查找文件)which bash
- whereis(查找文件)-b/m(二进制/说明文件)bash
- cmp(比较两个文件是否有差异,无差异则不会显示任何东西)
- pwd:显示工作路径
- ls:查看目录中的文件
- grep:分析一行信息,若有需要就显示出来,配合管道符使用,对一些命令的输出进行筛选加工等。grep 所需文件 目录
- sort:排序两个文件的内容
- comm:-1 比较两个文件只删除文件1的内容,-2只删除文件2的内容;-3删除文件共有内容
- tar:tar -cvzf加压 -xvzf解压 -cjvf加压 -jxvf解压
- 系统和关机:shutdown -h now ;init 0 ;telinit 0; shutdown -h hours:monutes;shutdown -c;shutdown -r now;reboot; logout;time(测算一个命令的执行时间)
- ps:将某个时间点的进程运行情况选取下来并输出。
- kill:杀死进程
- (命令信息具体可以查看http://www.tuohang.net/article/240846.html)
- vim的使用
- 三种模式切换:命令行模式-》编辑模式(输入a、i);编辑模式-》命令行模式(esc);命令行模式-》底行模式(shift+:,wq!强制保存退出)
- 命令行模式功能键(主要yy dd p u ;查找/?+字符串 ;替换:行号或者% s/old/new/gc %s/sum/result/g;编辑多个文件:vim 文件名1 文件名2;跳转:n 文件名 ;文件保存:w r ;sp+文件名多文件编写 )
- yy:复制当前光标所在行
- nyy:复制当前光标开始的n行
- p:黏贴复制的到所在光标行
- dd:删除当前光标所在行
- ndd:删除当前光标所在开始的n行
- /name:查找光标之后名为name的字符串
- G光标移动到文件尾
- u:取消前一个动作
- 具体


- gcc的使用
- 交叉编译:在宿主机下编程出在目标机下运行的代码的过程(在当前cpu平台下编译出在其他cpu平台运行的代码过程,不同的处理器有不同的汇编)
- gcc:GUN计划提供的编译器
- 了解程序从编写到运行的过程

- 编译前预处理:头文件展开,宏替换,条件编译;生成.i文件,GCC可以通过选项E使程序在预处理结束后就停止编译, gcc -E -o hello.i hello.c
- 编译:检查语法,转成汇编,生成汇编代码。可以通过选项S使GCC在进行完编译后停止,生成.s的汇编程序。gcc -S -o hello.s hello.c
- 汇编:编译汇编文件,生成目标文件,保存为.o的目标文件。可以通过-c选项生成目标文件。gcc -c -o hello.o hello.c
- 链接:链接所有目标文件,生成符号表,生成可执行文件。gcc -o hello hello.c
- GCC相关选项
- -c:进行汇编阶段,.c->.o
- -o:确定可执行文件的名称(elf格式:可执行和可链接格式用于可执行文件、目标代码、共享库和核心存储的标准文件格式)
- -E:只进行预处理
- -C:保留注释
- -S:进行编译阶段
- -g:产生调试工具GDB所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。
- -O:对程序进行优化,可执行文件的执行效率可以提高。O2 O3 O0 O1
- -l:头文件指定路径?
- -L:库存放的路径
- -lname:在连接时装载名字为libname.a的函数库,改函数库位于系统预设的目录或者由-L选项确定的目录下。
- -static:静态链接库文件
- -w:关闭所有警告
- -Wall:打开所有警告
- -D:定义宏
- 程序库:包涵了一些通用函数的数据和二进制可执行机器码的文件,单独不能运行,与其他可执行程序结合起来可以运行。库文件:保存函数和变量,里面的函数和变量只能使用,但是看不到实现。
- 库文件的存放路径:系统运行所需的库文件:/lib 第三方软件和工具所需要的的库:/usr/lib;在编译时,编译器会自动到这两个目录里找所需要链接的库文件
- 静态库:.a,保存的函数和变量,在编译阶段加载到可执行文件中。
- 制作静态库
- 将目标源文件编译成目标文件;gcc -c 目标文件(gcc -c add.c)
- 使用ar工具制作静态:ar -rcs(库不存在就创建,存在就更新) 所要生成库文件的名字(lib+库名+后缀.a) 目标文件 ar -rcs libadd.a add.o (ar -t 库名(查看当前库里所有文件.o) ar -d 库名 .o 删除库里的.o 文件)
- 使用静态库:-l 指定加载哪个静态库,-L指定加载的库文件指定目录 gcc demo.c -ladd -L./lib
- 动态库:.so保存的函数和变量,在执行阶段加载到执行文件中。
- 制作动态库
- gcc -shared-fPIC -o 库名.so 源文件.c
- gcc 源文件.c./库名.so -o 可执行文件名(尽量要编译的程序.c往前放,有一定的顺序问题;另外,动态库也可以用lL也调用,并且动态库静态库同名时,默认调用的是动态库)
- 区别:
- 使用静态库编译出来的可执行文件大小>使用动态库编译出来的可执行文件大小 --》内存的开销
- 使用静态库编译出来的可执行文件执行速度<使用动态库编译出来的可执行文件执行速度
- 使用静态库编译出来的可执行文件升级<使用动态库编译出来的可执行文件升级
- 使用静态库编译出来的可执行文件程序部署<使用动态库编译出来的可执行文件程序部署
posted @
2023-05-13 13:31
风中凌乱的猪头
阅读(
24)
评论()
收藏
举报