怎样把建好的网站上传到互联网,营销型网站的付费推广渠道,个人可以做网站么,湖北省建设网站目录 一、理解文件系统在磁盘中的存储
#xff08;1#xff09;inode是什么
#xff08;2#xff09;硬链接
#xff08;3#xff09;软链接
二、动静态库
#xff08;1#xff09;静态库
二、动态库
三、在链接动静态库的时候如何不用指定路径 一、理解文件系统…目录 一、理解文件系统在磁盘中的存储
1inode是什么
2硬链接
3软链接
二、动静态库
1静态库
二、动态库
三、在链接动静态库的时候如何不用指定路径 一、理解文件系统在磁盘中的存储
1inode是什么 我们使用ls -l的时候看到的除了看到文件名还看到了文件元数据。 这些数据每行都有7列
权限 硬链接数量 文件所有者 文件所属组 大小 最后修改时间 文件名
ls是从磁盘上读取存储在磁盘上的文件信息然后显示出来 其实这个信息除了通过这种方式来读取还有一个stat命令能够看到更多信息
这里面有一些信息我们需要解释一下
inode为了能解释清楚inode我们先简单了解一下文件系统 Linux ext2文件系统上图为磁盘文件系统图内核内存映像肯定有所不同磁盘是典型的块设备硬盘分区被划分为一个个的block。一个block的大小是由格式化的时候确定的并且不可以更改。例如mke2fs的-b选项可以设定block大小为1024、2048或4096字节。而上图中启动块Boot Block的大小是确定的。 将属性和数据分开存放的想法看起来很简单但实际上是如何工作的呢我们通过touch一个新文件来看看如何工作。 通过这段话我们可以理解inode是用来存放文件的属性文件内容数据块的编号操作系统在查找一个文件的时候就是先得到他的inode编号然后在磁盘中根据inode的编号找到该文件属于哪一个分区再从该分区中找到自己是哪一个Block Group然后在自己的Block Group找到inode table进而找到存放数据的数据块。 2硬链接 所以在磁盘中存放的并不是文件名而是inode而目录中存放的就是文件名和inode的映射关系。那么在Linux中我们可以在目录文件中让多个文件名映射同一个inode即硬链接 硬链接就好像我们c里面的符号表示前者是后者的别名 3软链接
软链接是通过一个新的inode映射一个文件而该文件中存储的就是其他文件的路径 二、动静态库
1静态库 1静态库.a程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库 2动态库.so程序在运行的时候才去链接动态库的代码多个程序共享使用库的代码。 3一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表而不是外部函数所在目标文件的整个机器码在可执行文件开始运行以前外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中这个过程称为动态链接dynamic linking 4动态库可以在多个程序间共享所以动态链接使得可执行文件更小节省了磁盘空间。操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用节省了内存和磁盘空间。 其中ar是归档工具选项rc表示replace and creat 我们已经成功创建了一个静态库了下面我们用这个静态库来链接一下让我们的源文件也能使用静态库中的函数 这里的-L选项是告诉编译器我们的静态库在哪个路径下面而-l选项是告诉编译器要链接哪一个静态库。值得注意的是这里的静态库需要掐头去尾只保留自己的名字。 二、动态库 到这里我们的动静态库都能够正常使用了 三、在链接动静态库的时候如何不用指定路径
1拷贝库文件到系统查询库的路径下一般指/usr/lib就是让编译器知道我们的库文件放在哪里
2更改环境变量LD_LIBRARY_PATH 3修改配置文件本质上也是该环境变量 配置/etc/ld.so.conf.d/ldconfig更新 4在系统查询库的路径下弄一个软硬链接出来让这个软硬链接指向我们的库