软硬链接与动静态库基本概念(快速回顾)
一.软硬链接
1.软硬链接的概念
硬链接
在linux上,多个不同名称的文件名可以对应一个相同的inode,这种情况叫做硬链接。
软链接
而软链接是给文件形成一个inode不同的文件,但不包含数据内容,而是存储了所链接文件的地址路径信息,像是一个“指针”。类似于应用的快捷方式
2.创建软硬链接指令
硬链接
ln abc def
软链接
ln -s abc.s abc
3.软硬链接区别
软链接 | 软链接与目标文件inode不同 | 相当于对目标文件找了个快捷方式 | 删除目标文件软链接会变无效 |
硬链接 | 硬链接与目标文件inode相同 | 相当于对目标文件重新定义了一个不同名称的文件 | 删除目标文件硬链接不会变无效 |
二.动静态库
1.库是什么
库是写好的现有的,成熟的,可以复⽤的代码
后缀 | windows | linux |
---|---|---|
动态库 | .dll | .so |
静态库 | .lib | .a |
2.静态库的创建方式
ar -rc libmath.a add.o sub.o
将.o文件创建成静态库
3.静态库使用
gcc main.c -I头⽂件路径 -L库⽂件路径 -lmath
-L | 指定库路径 |
-I | 指定头文件搜索路径 |
-l | 指定库名 |
4.动态库创建
gcc -fPIC -c add.c sub.c
先用fPIC生成.o文件
gcc -shared -o libmath.so add.o sub.o
后生成.so动态库
5.动态库使用
gcc main.c -I头⽂件路径 -L库⽂件路径 -lmath
动态库链接时需要让系统找到动态库,否则链接不成功,可用一下方式
1.直接将.so复制到 lib64中
2.进行软链接在lib64创建快捷方式找到.so
3.echo $LD -LIBARARY _PATHC 配置环境变量
4./ etc/ld.so.conf.d/ 将动态库地址粘贴进去 后 使 ldconfig重新加载
注意:当动态库静态库同时存在时gcc/g++默认使用动态库 如果想要链接静态库需要加上-static