Linux基础知识入门篇

大一
夏季夏令营留
苏嵌学习2019年7月22日
加油(ง •̀_•́)ง 小高

Linux的结构目录:
1、 /:根目录,只存放目录,列如/sbin,/bin,/usr等。
2、bin(binary):二进制,存放可执行文件,常用的基本命令(列如ls)。查看文件夹,文件
3、dev(device):存放设备文件(列如u盘)。
4、lib:存放库文件(列如printf等函数)。
5、root:root用户的家目录。
6、sys proc:保存内核信息。
7、etc:保存系统配置文件。
8、var:保存日志文件。
9、home:普通用户的家目录。
10、sbin(super sbin):存放等级较高的命令,(列如ifconfig,等)。在这个目录里的命令,只有管理员才可以使用。
11、usr:存放用户安装的软件。
12、boot:存放启动文件。
13、mnt:挂载目录。

Linux的键盘输入操作:
ctrl+c:中断当前的任务。
Tab:自动补全。
简单命令操作
1、cd:改变工作路径。
cd +路径(绝对路径和相对路径)
绝对路径:从根目录开始,以 / 开始递归的形式描述路径。
相对路径:相对当前路径。
cd … :返回上一级的目录。
cd . :进入当前目录。
cd - :返回上一次的工作路径。
cd ~ :返回家目录。
cd / :进入根目录。
2、ls:显示文件。
ls的一些表达形式:
ls -a :显示所有的文件,以.开头的文件一般不显示,只有当ls -a的情况下才能显示。
ls -l :显示文件的属性和权限。
3、pwd:显示路径。
pwd+文件名: 可以显示文件所在的路径。
4、mkdir:创建目录。
mkdir + 目录名 :创建目录。
5、cat :显示文件的内容。
cat + 文件名:可以显示文件的内容。直接在终端中显示
6、rm -rf :彻底删除。
rm -rf +文件名:彻底删除文件。
7、cp(copy):复制。
cp +源路径+目的路径:将文件从源路径复制到目的路径。(路径可以采用相对或者绝对路径)
cp ±r(f)+源路径+目的路径:将文件夹以递归的形式从源路径复制到目的路径。(路径可以采用相对或者绝对路径)。(f)可加可不加表示强制执行。
8、mv:移动文件或者重命名文件。
mv +源路径+目的路径:将文件从源路径剪切移动到目的路径。(路径可以采用相对或者绝对路径)
mv +空格+旧名字+新名字 :重命名。
9、useradd +用户名:在home目录中创建一个新的普通用户。
10、passwd:设置口令(密码)
passwd+用户名:设置该用户的密码。如果passwd不加任何用户名,默认修改的是root用户的密码。
11、su +用户名:实现的是切换用户。从root进入其他普通用户不需要密码,如果从普通用户进入root则需要root的密码。普通用户之间相互切换是需要密码的。su后面不加任何用户名,默认进入的是root用户。
12、cat /etc/passwd :可以查看自己所建立的用户。
13、userdel:删除用户但不删除家目录。可以用rm -rf +用户名删除家目录。
userdel ±r:在删除用户的同时删除家目录。

GCC命令
注:gcc命令最后必须加上-o 文件名 生成文件 然后./运行文件
Ubuntu自带gcc,红帽可能需要自己下载系统文件,自己可根据版本调试。
gcc是linux最流行的编译系统。可以编译c,c++等多种高级语言。

用法:1、gcc +文件名 + -o +生成文件名。
gcc hello.c -o hello
将hello.c的文件编译成hello文件。
2、gcc + -E + 文件名 + -o +生成文件名。(注:-E中E为大写)
gcc -E hello.c -o hello.i
预处理,将hello.c中所有带有#号的部分处理掉,并生成hello.i文件。
3、gcc + -S + 文件名 + -o +生成文件名。(注:-S中S为大写)
gcc -S hello.i -o hello.s
首先检查语法,然后再将hello.i中的c代码转化成hello.s中的汇编语言,并生成hello.s文件
4、gcc + -c + 文件名 + -o +生成文件名。(注:-c中c为小写)
gcc -c hello.s -o hello.o
将hello.s中的汇编语言转化为hello.o中的二进制语言,并生成hello.o文件。
5、-static:使用静态链接。
6、-llibrary:链接library函数库文件。
7、-L dir:指定连接器的搜索目录dir。
8、-shared:生成共享文件。

工程车静态库和动态库的制作
静态库:编译时,链接所有需要的库。
优点:对运行环境没有要求。
缺点:文件大。
制作步骤:以编写main文件为列
1、编写main.c,print.c,show.c。
2、将show.c和print.c文件转为二进制文件。
gcc -c show.c print.c
3、制作静态库。
ar -crv libxxx.a show.o print.o
注:libxxx.a是格式。xxx是库名,.a表示的是静态库。下面的.so表示的是动态库
4、静态编译。
gcc main.c -o main -L . -lxxx -static
注:-L . 中-L表示静态库的位置。 .表示静态库就在当前目录下。-l表示静态库的名字。xxx表示静态库具体的名字。-static表示这是静态编译。
5、运行
./main 运行main文件,查看是否存在错误,是否能编译成功。

动态编译:编译时,不链接库文件。
优点:文件小。
缺点:对运行的环境有要求。
制作步骤:以main文件为列
1、制作动态库
gcc -fPIC -shared -o libxx.so print.c show.c
注:PIC是大写
2、动态编译
gcc main.c -o main -L . -lxx
3、将动态库复制到默认系统下。
cp libxx.so /usr/lib
4、运行文件
./main

Make和Makefile
Make工程管理器是完全根据Makefile里的编译规则命令执行工作。Makefile文件由下面三种基本内容组成。
1、需要生成的目标文件(Target file)。
2、生成目标文件所需要的依赖文件(Object file)。
3、生成目标文件的编译规则的命令行(command)。
Target file:Object file
(Tab)command
注:在command前一定要加个Tab键。
列如:
1、vim Makefile (先建立个Makefile的文件)
2、在Makefile中可以使用$来引用变量。
object=1.o 2.o main.o
Target=main

$(Target) : $(Object)
(Tab) gcc $(Target) -o $(Object)
以上是引用 $的最基本的Makefile的使用方式。
在linux系统中,直接打出make指令,就可以读取Makefile文件。
3、我们还可以在Makefile中加上clean,也就是rm -rf删除命令,采用make clean指令可以执行删除命令,为了避免存在clean文件所产生的冲突。我们设置clean伪指令。
example:.PHONY : clean
clean:
(Tab) rm *.o main
最后在linux中直接敲出make clean 可以直接读取Makefile中的clean所代表的指令。
注:在Makefile文件中还存在一些隐藏规则。列如:还是以上面已经建立的Makefile文件为列,Makefile存在的当前路径中所依赖的文件没有.o结尾的文件时,系统会自动寻找以.c结尾的依赖文件,并且直接将其编译成以.o结尾的文件,再将以.o结尾的文件带入执行。
举例隐藏规则的代码:
f1.o(目标文件):f1.c(依赖文件)
(Tab)gcc -c f1.c -o f1.o(编译规则)
f2.o : f2.c
(Tab) gcc -c f2.c -o f2.o
main.o : main.c
(Tab) gcc -c main.c -o main.o

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值