linux之文件系统、inode和动静态库制作和发布

这篇具有很好参考价值的文章主要介绍了linux之文件系统、inode和动静态库制作和发布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

1.没有被打开的文件都在磁盘上  --- 磁盘级文件

2.对磁盘级别的文件,我们的侧重点

单个文件角度 -- 这个文件在哪里,有多大,其他属性是什么?

站在系统角度 --  一共有多少文件?各自属性在哪里?如何快速找到?可以存储多少个文件?如何快速找到指定文件?如何对此磁盘文件进行分门别类的存储,用来支持更好的存取!

3.磁盘文件

磁盘是一个外设 + 还是计算机上唯一的一个机械设备

4.磁盘结构

磁盘盘片、磁头、伺服系统、音圈马达....

5.磁盘的存储结构

如何找到一个扇区 (CHS寻址)

        1.在哪一个面上

        2.在哪一个磁道上(柱面)

        3.在哪一个扇区上

我们有了CHS,能找到任意一个扇区,那么所有的扇区我们就都能找到了。

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

二、inode

如何找到文件:找到了inode编号 -> 分区特定的Bg -> inode -> 文件属性 -> 文件内容

linux中,inode属性里面,没有文件名这种说法。

知识提及:

1.一个目录下,可以保存很多文件,但是这些文件没有重复的文件名!

2.目录是文件 -> 目录需要自己的inode,有自己的Data block, data block存 文件名和inode的映射关系。文件名和inode 互为key值!

        创建文件,系统做了什么:

        删除文件,系统做了什么:

        查看文件,系统做了什么:

inode是固定的,datablock是固定的

三、软硬链接

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

unlink :解除链接,相当于删除

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

软硬链接有什么本质区别:有无独立的inode。

软链接有自己独立的inode ->  软连接是一个独立的文件

硬链接无自己独立的inode -> 硬链接不是一个独立的文件

1.软链接

 1> 特性:软连接的文件内容,是指向的文件对应的路径

 2> 应用:相当于快捷方式

2.硬链接

 1> 特性:创建硬链接,不意味创建新文件。就是在指定的目录下,建立了 文件名 和 指定inode 的映射关系。linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

默认创建目录,引用计数(硬链接)为什么是呢?

        是因为      自己目录名:inode      自己目录内部.  :idnoe 。都有对应。  

acm 文件的三个时间:

Access 最后访问时间

Modify 文件内容最后修改时间

Change 属性最后修改时间

四、动静态库

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

1.如何编写库(编写库的角度)

1> 静态库:.a

1> 编写静态库

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器 这是头文件都没有使用了共享库,为了省事,所以添加了-shared选项,就能编译通过形成可执行文件。

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

 这个libhello.a就是静态库

注:ar:gnu归档文件,r:替换, c:create,库名前面必须是lib,静态库后缀必须是.a

那么如何发布库呢,这是Makefile

2> 发布静态库

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

形成了hello的目录,文件内容如下图

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

接下来就可以把这个静态库发布给别人了

头文件gcc的默认搜索路径是: /usr/include

库文件的默认搜索路径是: /lib64

方法一:拷贝到系统路径下。但是不太建议第三方库拷贝到系统默认路径下,会造成污染linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

自己所写的库是第三方库,要标注这个第三方库才能编译通过

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

我们拷贝库到系统的默认路径下,就叫做库的安装。

方法二:相对路径

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

-I(大i) 头文件搜索路径      -L 库文件搜索路径         -l(小L) 在特定的路径下,使用哪一个库

2.>动态库:.so

1> 制作动态库

        由于库内容与静态库重合,前面提及,此处不在论。

2> 发布动态库

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

如果只有静态库,gcc只能采用静态库

如果动静态库同时存在,gcc默认是采用动态库的

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

        而我们想要使用静态库时,只需编译时后面加上 -static就行。

3> 给动态库导环境变量
1.内存级的导入环境变量

        退出就会没有

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

LD_BIBRARY_PATH : 是导引库的环境变量

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器2.修改配置文件 

是一个永久方案。

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

打开vim后,把动态库文件的路径粘贴进去就行。

最后在 sudo ldconfig,更新让配置的文件生效

解除的话删掉这个文件就好了,然后再更新

3.软链接

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

解除软链接:

linux之文件系统、inode和动静态库制作和发布,linux,运维,服务器

4.写登录脚本

...(大部分都是去搞环境变量)

vim .bashrc

而.bashrc是通过.bash_profile中调用的,这里面也可以导环境变量。      文章来源地址https://www.toymoban.com/news/detail-846754.html

到了这里,关于linux之文件系统、inode和动静态库制作和发布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux软硬链接和动静态库

    本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 当我们安装一款软件成功后,桌面会多一个图标,如果我们点击图标就能启动软件,但那个图标就是软件本身吗?显然不是!图标只是软件启动程序的一个快捷方式,在Linux中可以通过软硬链接来创建类

    2024年02月08日
    浏览(25)
  • 【Linux】软硬链接和动静态库

    **软链接:**是一个独立文件,有自己独立的 inode 和 inode 编号。 **硬链接:**不是一个独立的文件,它和目标文件使用的是同一个 inode。硬链接就是单纯的在 Linux 指定的目录下,给指定的文件新增 文件名 和 inode 编号的映射关系! 我们可以通过如下命令,创建一个文件的软硬

    2024年02月05日
    浏览(24)
  • 【Linux】-- 基础IO和动静态库

    对于C文件接口,假如想向特定文件写入字符串: cFile.c 执行结果如下,查看log.txt文件: 假如想从特定文件读字符串,从log.txt中按行读取,读取的内容放在缓冲区,如果fgets读取成功,返回读取的新字符串的地址,如果读取失败就返回NULL,feof用来判断文件是否正常退出,即

    2024年02月07日
    浏览(33)
  • 【Linux】基础 IO(文件系统 & inode & 软硬链接)-- 详解

    1、前言 我们一直都在说打开的文件,磁盘中包含了上百万个文件,肯定不可能都是以打开的方式存在。其实文件包含打开的文件和普通的未打开的文件,下面重点谈谈未打开的文件。 我们知道打开的文件是通过操作系统被进程打开,一旦打开,操作系统就要维护多个文件,

    2024年03月21日
    浏览(36)
  • 【Linux】文件系统中inode与软硬链接以及读写权限问题

    我们接下来以磁盘举例: 文件=文件内容+文件属性 Linux中文件内容与属性是分开存储的。 文件内容:在数据块中存着 文件属性:在inode中存着 Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子 超级块(

    2024年02月05日
    浏览(62)
  • 【linux】:老师问什么是爱情,我说了句:软硬链接和动静态库

        文章目录 前言 一、软硬链接 二、动态库和静态库 总结   上一篇文章的最后我们讲解了文件的inode,那么文件名和inode有什么区别呢?区别就在于linux系统只认inode号,文件的inode属性中,并不存在文件名,而文件名其实是给用户用的。我们以前讲过linux文件目录,那么目

    2023年04月19日
    浏览(118)
  • 【Linux】什么是文件系统及inode?如何创建软硬链接?软硬链接有什么作用?

    了解一下文件系统: Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被 划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设 定block大小为1024、2048或4096字节。而

    2024年02月11日
    浏览(37)
  • 【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤

    1、提高开发效率,让开发者所有的函数实现不用从零开始。 2、隐藏源代码。          库其实就是所有的.o文件用特定的方式进行打包形成一个文件,各个.o文件包含了源代码中的机器语言指令。 先将我们的.c文件或者是.cpp文件形成.o文件,指令为: gcc/g++ -c 要形成的.o文

    2024年04月17日
    浏览(34)
  • AxureRP制作静态站点发布互联网,内网穿透实现公网访问

    AxureRP对于产品经理来说,是一款经常使用的网站原型设计工具。它可以用来创建和设置图表样式,为图表页面和元素添加交互性和注释,并能将正在设计中或设计完成的页面随时发布到HTML,使用Web浏览器查看。但除了在局域网中访问,很多时候也会有出差在外,需要使用公

    2024年02月11日
    浏览(31)
  • 文件系统内部的inode是为了解决什么问题?有什么用途?

    文件系统内部的inode(Index Node)是为了解决文件管理和数据存储的问题,并提供了一些重要的用途,包括: 1. 文件索引:inode是文件系统中的一个数据结构,它存储了文件的元数据,如文件名、文件大小、文件权限、文件所有者等信息。inode相当于一个文件的索引,通过它可

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包