软硬链接
软链接创建
硬链接创建
软链接是独立文件(独立inode号)
硬链接不是独立文件(inode和目标相同)
如何理解软硬链接
软链接有独立inode,软链接内容上,保存的是文件路径
硬链接不是独立文件,没有独立inode
本质是一组文件名和已知
(图片)
inode中有属性ref_count引用计数,记录硬链接数
为什么要有软硬链接
软链接:快捷方式 重命名
.与..是硬链接
硬链接可以用来备份,源文件被删除后可以根据硬链接打开文件
不可对dir进行硬链接,(防止形成环状路径,硬链接类型为d,os区分不了其与普通dir)
可对dir软链接(也会成环,但软链接类型是l不是d,os可以区分)
(. 和 ..是特例,只有此时硬链接可以指向目录)
动静态库
静态库.a 使用方法
库下载到系统中
ar -rc libmystdio.a filename.o filename.o 生成库
ar [选项] 归档文件名 [目标文件列表]
//用于创建、修改和提取静态库文件(也称为归档文件)
-rc参数:replace&creat,另外注意前缀后缀
gcc teat.c -lmystdio 去前缀,去后缀,加-l,引入第三方库
库未下载到系统中
gcc test.c -L -lmystdio
除了系统路径,就要加-L 指定库路径目录
-I(大写) 指定 头文件路径
写库不能包含main(),会报错
安装及h文件放入include文件夹,.a放入lib
动态库.so使用方法
gcc -shared -o libname.so filename.o
不要形成可执行程序,形成.so库
gcc -fpic -c my_stdio.c
form position ignore code
ldd exefile
查看exe依赖库
静态库随便删,动态库不能删
tar xzf filename.tgz 解压tgz文件
运行exefile,如何给系统指定路径查找动态库(默认/lib64)
系统lib中建立软链接
sudo ln -s reallibfile /lib64
OS找动态库路径,以LD_LIBRARY_PATH为默认找库路径
gcc指定软硬链接
gcc 默认动态链接
-static指定静态链接
动态库映射到共享区
同一份共享库可多进程共享,节省空间
板书笔记