boot : 存放于操作系统相关的信息
dev: 保存各种设备的信息
etc: 存放第三方软件的配置文件
home : 每个用户都会有一个home目录
lib/lib64: 保存各种库。
粘滞位的前提:
多用户进行数据共享时,可能将其他目录的权限全部公开,方便多人同时协作共享。
给目录添加粘滞位后,就可以保证不属于你的文件无法删除。但是并不影响正常的读写。
建立硬链接的本质就是在指定路径下,新增文件名和iNode编号的印射关系。
iNode中有计数器count,引用计数,硬链接数。
软链接中可保存目标文件的路径。
Linux中软链接相当于快捷方式。
删除链接文件推荐使用:
unlink xxx
一个普通文件,本身有一个文件名和自己的iNode具有一个映射关系。
.可以作为目录的硬链接。
Linux不允许普通用户给目录建立硬链接。
acm 下面解释一下文件的三个时间:
Access 最后访问时间
Modify 文件内容最后修改时间
Change 属性最后修改时间
文件权限发生变化,change会发生改变
内容改变后属性大概率也会发生变化。
静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静 态库
动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。
一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文 件的整个机器码
在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个 过程称为动态链接(dynamic linking)
动态库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。操作系统采用虚 拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间。
库的本质就是.o文件的集合。
-I:指明头文件的位置
-L:指明库的位置
-l:指明库名称
ldconfig
更新配置文件。
静态链接时,代码直接被拷贝到代码区,之后从c库中拷贝到程序中的代码,必须通过相对确定的地址位置来访问。
动态库中的指定函数的地址(偏移量),写入可执行程序中。