Linux学习笔记1

目录

一.Linux系统概述

二.Linux常用命令

2.1目录相关命令

2.2.文件命令

2.3查看文件内容

2.4其他命令

三.文本编辑器vim

四.gcc编译器 

五.静态库与动态库

1.静态库与动态库概念

2.静态库与动态库区别

3.静态库的创建

4.静态库的使用

5.动态库的创建

6.动态库的使用


一.Linux系统概述

1.嵌入式:以计算机应用为核心,软硬件可裁剪的专用计算机操作系统,对功耗,体积,成本,可靠性等有要求的系统。

2.linux是一个分时,多任务,多用户的操作系统。

3.代码临界区:指处理时不可分割的代码,运行这些代码不允许被打断(若中断不调用任何包含临界区的代码,也不访问任何临界区使用的共享资源)(封闭区域,不被打扰)。

4.linux文件没有扩展名。不同文件可通过属性查看。

-开头:普通文件

d:目录文件

b:块设备文件

c:字符设备文件

p:管道文件

l:链接文件

s:套接口文件

5.内核:内核提供的基本服务是任务切换。内核与系统是不通的。

非占先式内核:每个任务自我放弃CPU的所有权、也称合作型多任务,合作共享一个CPU。

占先式内核:一个任务被高优先级的任务取代时,该任务将失去所有权。

6.linux文件系统只有一个根目录,没有父目录。

以斜杠开始的路径称为绝对路径,从根目录逐级查找。

不以斜杠开始的路径称为相对路径,从当前目录逐级查找。

二.Linux常用命令

2.1目录相关命令

cd               //切换目录

pwd           //显示当前路径

mkdir a     //创建a目录                     

mkdir -p ./a/b/c    //在a目录下创建b目录,b目录下创建c目录

mkdir -pm 777 ./a/b/c      //创建目录并设置权限

rmdir    //删除目录

2.2.文件命令

ls

参数说明

-a:显示所有的隐藏目录和文件

-l:长格式显示当前目录或文件的属性

-al:长格式显示当前所有隐藏目录的属性

-s:在每个文件的后面打印出文件的大小

-t:按时间进行文件的排序

cp

参数说明

-f:强制覆盖

-i:询问是否覆盖

-r:拷贝目录(带子文件)

-u:比较文件新旧,新覆盖,旧不覆盖。

rm

参数说明

-f:强制删除

-i:询问是否删除

-r:删除子目录

rm -rf:强制删除

mv

参数说明

-f:如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。

-i:如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。

-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作

2.3查看文件内容

cat:在终端显示文件内容。(头到尾)

参数说明

-n:带行号显示

-E:在每行结束处显示 $

-T:将 TAB 字符显示为 ^I

-v:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外

-A:等价于 -vET

tac:在终端显示文件内容。(尾到头)

参数说明:与cat相同

more:按页查看

例:ls-al /etc | more   

 |:管道符(命令A|命令B,即命令1的正确输出作为命令B的操作对象。)

less:与more相似

head:显示前些行的命令

参数说明

head 文件名(默认显示前十行)

head -line 文件名 :  显示前line(行号)行

tail:显示后些行的命令

参数说明

tail 文件名(默认显示后十行)

tail -line 文件名 : 显示后line(行号)行

nl:nl命令用于计算文件中行号。nl可以将输出的内容自动加上行号

参数说明

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(默认值)

od:读取所给予的文件的内容,并将其内容以八进制字码呈现出来。

2.4其他命令

touch:创建文件

passwd:用来更改使用者的密码

命令参数:

-d 删除密码

-l 停止账号使用

-S 显示密码信息

su:切换用户

tar:打包压缩

参数说明:

-c :创建一个归档文件

-x:释放归档文件

-z:压缩成gzip格式

-j:压缩成bzip2格式

-J:压缩成xz格式

-v:显示过程

-f:后面跟文件的名字

打包并压缩成gzip格式 :tar -czf day1.tar.gz day1

打包并压缩成bzip2格式 :tar -cjf day1.tar.bz2 day1

打包并压缩成xz格式: tar -cJf day1.tar.xz day1

万能拆包命令 :tar -xvf 压缩包

                          -C指定路径

tar -xvf day1.tar.gz -C

clear:清屏

ifconfig:查看设置虚拟机ip地址

ifconfig  eth0 ip :配置ip地址

man :查看Linux中的指令帮助、配置文件帮助和编程帮助等信息

find :根据输入的指定路径或表达式路径中查找目录或文件

语法格式:find +参数+路径+查找和搜索范围

参数说明:

-name:根据名称查找

-size:根据大小查找

-user:根据属性查找

-type:根据类型查找

-iname:忽略大小写

chgrp:更改文件或目录的一组

chown:设置文件所有者和文件关联组的命令

chown -R:处理指定目录以及其子目录下的所有文件

chmod:更改目录权限

语法:chmod + 权限 + 目录/文件
chmod 777 目录/文件
u:usr
g:group
o:other
a:all
r:
w:
x:
chmod u-w 207

chomd -R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

echo:回显

echo $PATH:查看PATH

PATH = “$PATH”:/root:查找PATH的值,在整个路径下找并且可到root目录下找。

三.文本编辑器vim

命令行模式:ESC
复制:yy
复制n行:nyy
粘贴:p
剪切:dd
剪切N行:ndd
u:撤销
gg:跳转到首行
G:跳转到尾行
ngg(nG):跳转到n行
v:光标经过位置选中(按行)
ctrl+v:光标经过位置选中
保存并退出的快捷键:shift+zz /(ZZ)

插入模式:(在命令行模式)下输入:i

底行模式:(在命令行模式下):输入:shift +:
q:退出
w:保存
w [文件名]:另存为
n1,n2 w + 文件名:保存n1~n2行到指定文件
wq:退出并保存
q!:退出不保存
set nu:显示行号
set nonu:取消显示行号
sp :上下分屏
vsp:左右分屏
/name:查找
n1,n2 s/word1/word2/g:n1行到n2行word1都换成word2
!+命令:强制执行命令,不需要回到终端
多文档编辑:files  显示打开的文件
             n    向后切换文件
             N    向前切换文件

多窗口:sp +文件名
        ctrl +ww 光标窗口切换

四.gcc编译器 

1.预处理(-E)
预处理的作用:对宏的替换,头文件的展开,条件编译的替换。
宏仅仅是在C预处理阶段的一种文本替换工具,就是指一段文本替换成另外一段文本,
而不考虑其中任何的语义内容。不做运算,不做语法分析。
gcc -E hello.c -o hello.i
2.编译(-S)
编译的作用:进行语法的检查,如果代码语法有问题,会报错,结束编译,生成一个汇编文件
gcc -S hello.i -o hello.s
3.汇编(-c)
汇编的作用:将汇编文件转换成二进制文件,还没有链接到库,不可执行
gcc -c hello.s -o hello.o
4.链接
链接的作用:将所有需要的.o文件链接生成可执行的二进制文件
gcc hello.o -o hello
5.调试
gcc -g hello.c -o hello
6.优化(大写O)
-O0 、-O1 、-O2 、-O3  
编译器的优化选项的 4 个级别,-O0 表示没有优化, -O1 为默认值,-O3 优化级别最高。
gcc -O hello.c -o hello
7.多文件编译
8.-Wall:生成所有警告信息
9.-w:不生成任何警告信息
10.-I:指定头文件路径
11.-L:指定连接的动态库或者静态库路径
12.-l (L的小写):指定需要链接的库的名字

五.静态库与动态库

1.静态库与动态库概念

程序库:包含了一些通用函数的数据和二进制可执行机器码的文件,其单独不能够运行,但是如果将其与其他的可执行程序结合起来就可以执行了

静态库:是在执行程序之前就已经加入到执行代码中,成为执行程序的一部分来执行的,后缀名:.a

动态库:是在执行程序启动时加载到执行代码中,后缀名:.so

2.静态库与动态库区别

动态库只有在使用它的程序执行时才被链接使用,而不是将需要的部分直接编译入可执行文件中,并且一个动态库可以被多个程序使用故可称为共享库,而静态库将会整合到程序中,因此在程序执行时不用加载静态库。 从而可知,链接到静态库会使你的程序臃肿,并且难以升级,但是可能会比较容易部署。而链接到动态库会使你的程序轻便,并且易于升级,但是会难以部署。

3.静态库的创建

         gcc –c 源文件.c

         ar rcs libname.a(lib+库名) 目标文件1 目标文件2

         rc:静态库不存在,就创建该库文件

         s:更新库文件

4.静态库的使用

静态库创建成功后,然后对全局变量和函数进行声明,在编译的时候加上库文件就行!

gcc  file.c -o file –L. -lname

jsetc@linux:~/207$ gcc -c add.c sub.c mul.c div.c 
jsetc@linux:~/207$ ls
add.c  C练习  div.c  main    main.h  mul.o  sub.o
add.o  day3   div.o  main.c  mul.c   sub.c
jsetc@linux:~/207$ ar rcs -o libzc.a add.o sub.o mul.o div.o 
jsetc@linux:~/207$ ls
add.c  C练习  div.c  libzc.a  main.c  mul.c  sub.c
add.o  day3   div.o  main     main.h  mul.o  sub.o
jsetc@linux:~/207$ gcc main.c -o main -L. -lzc
jsetc@linux:~/207$ ls
add.c  C练习  div.c  libzc.a  main.c  mul.c  sub.c
add.o  day3   div.o  main     main.h  mul.o  sub.o

5.动态库的创建

gcc  -shared –fPIC –o 库名.so 源文件.c

6.动态库的使用

gcc 源文件.c ./ 库名.so –o 可执行文件名

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值