虚拟机linux

文件类型

每个文件的详细信息占一行,每行最前面都是一个符号就标记了当前文件类型,比如test1的第一个字符是“d”,test1.tar.bz2文件第一个字符是“-”。这些字符表示的文件类型如下:

- :普通文件,一些应用程序创建的,比如文档、图片、音乐等等。

d :目录文件。

c :字符设备文件,Linux驱动里面的字符设备驱动,比如串口设备,音频设备等。

b :块设备文件,存储设备驱动,比如硬盘,U盘等。

l :符号连接文件,相当于Windwos下的快捷方式。

s :套接字文件。

p :管道文件,主要指FIFO文件。

我们后面学习Linux驱动开发的时候基本是在和字符设备文件和块设备文件打交道。

Linux用户权限管理

Ubuntu用户系统

Ubuntu下用户类型分为以下3类:

● 初次创建的用户,此用户可以完成比普通用户更多的功能。

● root用户,系统管理员,系统中的玉皇大帝,拥有至高无上的权利。

● 普通用户,安装完操作系统以后被创建的用户。

以上三种用户,每个用户都有一个ID号,称为UID,操作系统通过UID来识别是哪个用户,用户相关信息可以在文件/etc/passwd中查看到,如图2.7.1.2所示:

权限管理命令

我们也可以使用Shell来操作文件的权限管理,主要用到“chmod”和“chown”这两个命令,我们一个一个来看。

权限修改命令chmod

命令“chmod”用于修改文件或者文件夹的权限,权限可以使用前面讲的数字表示也可以使用字母表示,命令格式如下:

chmod [参数] [文件名/目录名]

主要参数如下:

-c :效果类似“-v”参数,但仅回显更改的部分。

-f :不显示错误信息。

-R :递归处理,指定目录下的所有文件及其子文件目录一起处理。

-v :显示指令的执行过程。

我们先来学习以下如何使用命令“chmod”修改一个文件的权限,在用户根目录下创建一个文件test,然后查看其默认权限,操作如图2.7.3.1所示:

Linux磁盘管理

Linux磁盘管理基本概念

Linux C编程入门

看起来很简单是吧,只需要一行就可以完成编译,但是我们这个工程只有三个文件啊!如果几千个文件呢?再就是如果有一个文件被修改了以,使用上面的命令编译的时候所有的文件都会重新编译,如果工程有几万个文件(Linux源码就有这么多文件!),想想这几万个文件编译一次所需要的时间就可怕。最好的办法肯定是哪个文件被修改了,只编译这个被修改的文件即可,其它没有修改的文件就不需要再次重新编译了,为此我们改变我们的编译方法,如果第一次编译工程,我们先将工程中的文件都编译一遍,然后后面修改了哪个文件就编译哪个文件,命令如下:

gcc -c main.c

gcc -c input.c

gcc -c calcu.c

gcc main.o input.o calcu.o -o main

上述命令前三行分别是将main.c、input.c和calcu.c编译成对应的.o文件,所以使用了“-c”选项,“-c”选项我们上面说了,是只编译不链接。最后一行命令是将编译出来的所有.o文件链接成可执行文件main。假如我们现在修改了calcu.c这个文件,只需要将caclue.c这一个文件重新编译成.o文件,然后在将所有的.o文件链接成可执行文件即,只需要下面两条命令即可: gcc -c calcu.c

gcc main.o input.o calcu.o -o main

但是这样就又有一个问题,如果修改的文件一多,我自己可能都不记得哪个文件修改过了,然后忘记编译,然后……,为此我们需要这样一个工具:

1、如果工程没有编译过,那么工程中的所有.c文件都要被编译并且链接成可执行程序。

2、如果工程中只有个别C文件被修改了,那么只编译这些被修改的C文件即可。

3、如果工程的头文件被修改了,那么我们需要编译所有引用这个头文件的C文件,并且链接成可执行文件。

很明显,能够完成这个功能的就是Makefile了,在工程目录下创建名为“Makefile”的文件,文件名一定要叫做“Makefile”!!!区分大小写的哦!如图3.3.2.2所示:

 Makefile 函数使用

Makefile 支持函数,类似 C 语言一样,Makefile 中的函数是已经定义好的,我们直接使用, 不支持我们自定义函数。make 所支持的函数不多,但是绝对够我们使用了,函数的用法如下:

$(函数名 参数集合) 或者 ${函数名 参数集合} 可以看出,调用函数和调用普通变量一样,使用符号“$”来标识。参数集合是函数的多个 参数,参数之间以逗号“,”隔开,函数名和参数之间以“空格”分隔开,函数的调用以“$”开 头。接下来我们介绍几个常用的函数,其它的函数大家可以参考《跟我一起写 Makefile》这份 文档。

1、函数 subst

函数 subst 用来完成字符串替换,调用形式如下: $(subst ,,) 此函数的功能是将字符串中的内容替换为,函数返回被替换以后的字符 串,比如如下示例: $(subst zzk,ZZK,my name is zzk) 把字符串“my name is zzk”中的“zzk”替换为“ZZK”,替换完成以后的字符串为“my name is ZZK”。

2、函数 patsubst

函数 patsubst 用来完成模式字符串替换,使用方法如下: $(patsubst ,,) 此函数查找字符串中的单词是否符合模式,如果匹配就用来 替换掉,可以使用包括通配符“%”,表示任意长度的字符串,函数返回值就是替换后 的字符串。如果中也包涵“%”,那么中的“%”将是中的 那个“%”所代表的字符串,比如: $(patsubst %.c,%.o,a.c b.c c.c) 将字符串“a.c b.c c.c”中的所有符合“%.c”的字符串,替换为“%.o”,替换完成以后的字 符串为“a.o b.o c.o”。

3、函数 dir

函数 dir 用来获取目录,使用方法如下: $(dir …>) 此函数用来从文件名序列中提取出目录部分,返回值是文件名序列的目录 部分,比如: $(dir ) 提取文件“/src/a.c”的目录部分,也就是“/src”。

4、函数 notdir

函数 notdir 看名字就是知道去除文件中的目录部分,也就是提取文件名,用法如下: $(notdir …>) 此函数用与从文件名序列中提取出文件名非目录部分,比如: $(notdir ) 提取文件“/src/a.c”中的非目录部分,也就是文件名“a.c”。

5、函数 foreach

foreach 函数用来完成循环,用法如下: $(foreach , ,)此函数的意思就是把参数中的单词逐一取出来放到参数中,然后再执行所 包含的表达式。每次都会返回一个字符串,循环的过程中,中所包含的每个字符串 会以空格隔开,最后当整个循环结束时,所返回的每个字符串所组成的整个字符串将会是 函数 foreach 函数的返回值。

6、函数 wildcard

通配符“%”只能用在规则中,只有在规则中它才会展开,如果在变量定义和函数使用时, 通配符不会自动展开,这个时候就要用到函数 wildcard,使用方法如下: $(wildcard PATTERN…) 比如: $(wildcard *.c) 上面的代码是用来获取当前目录下所有的.c 文件,类似“%”。

NFS 服务开启

SSH 服务开启

Ubuntu 交叉编译工具链安装

交叉编译器安装

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值