1、 链接文件

链接分为两种:

软连接:符号链接,相当于windos上的快捷方式,软链接文件存储文件路径,软链接和源文件使用不同的inode结点,创建软链接文件,ln -s   源文件  新的链接文件,eg  ln  -s   mian.c   test.c,test.c就是软链接。

硬链接:相当于源文件的别名,硬链接文件和源文件使用同一个inode。ln   源文件  链接文件。

ll -i    可以查看inode

(什么是inode结点)

Linux 文件系统:EXT4,是索引式文件系统,磁盘格式化时,将磁盘空间分为三部分。

inode(存文件属性信息,block编号)

block(存储文件真实内容)

superblock(存储整个文件系统的信息,包括inode的总量,使用量,剩余量)

Linux06 链接文件

U盘:FAT32,链接式文件系统

Linux06 链接文件

2、库文件

库文件是某些功能文件代码的集合。

静态库:在链接阶段直接将库中的内容,通过链接器合并到最终的可执行文件中,静态库生成的可执行文件最终执行时,并不依赖文件,是中间文件的集合。windows 上是.lib,Linux上是.a。

静态库的生成:eg:gcc   -c   test.c  test.o       ,  ar   crv   libxxxx.a    test.o(命名lib开始,扩展名.a)

             使用 :gcc -o    test     test.c     -L(路径)    -l(库名称只有xxxx)

             或者:gcc -o     路径/libxxxx.a

静态库里面不能有main函数

动态库:(共享库)链接阶段只在可执行文件中知道使用的哪个库,运行时由操作系统加载到内存上。是不可单独执行的可执行文件。动态库单独存在磁盘上,执行时将动态库加载到内存上。windows 上是.dll,Linux上是.so

动态库的生成:eg:gcc   -shared   -fPIC    -o    libxxxx.so    test.c(命名lib开始,扩展名.so)

              使用 :gcc -o    test     test.c     -L(路径)    -l(库名称只有xxxx)

               或者:gcc -o     路径/libxxxx.a

操作系统加载动态库路径:/lib和/usr/lib

1、将动态库拷贝到/lib或者/usr/lib,只有root有权限

2、设置环境变量,使操作系统加载库时除了默认路径下搜索,还需要到用户指定的路径下搜索。

export LD_LIBRARY_PATH=绝对路径

export LD_LIBRARY_PATH=/home/stu/lib,仅仅对当前终端有效

可修改配置文件永久有效。/home/user/.bashrc

注*  怎么知道程序用了哪些库  ldd  poll

相关文章:

  • 2021-11-19
  • 2021-11-14
  • 2022-12-23
  • 2021-05-28
  • 2022-02-01
  • 2022-02-17
  • 2021-10-15
  • 2021-11-19
猜你喜欢
  • 2022-12-23
  • 2021-09-08
  • 2021-12-25
  • 2022-02-22
  • 2021-06-18
相关资源
相似解决方案