动/静态库的生成和使用

1.存储文件流程

从data_bitmap中获取空间数据块,写入文件数据,从inode_bitmap获取空间节点inode,写入文件详细信息以及数据块位置将文件目录项写入所在目录文件中。目录文件中存放的是一张表:其记录的时目录下的文件信息(文件名+inode节点号)

2. 软链接/硬链接

    软链接文件:创建:ln -s tmp.txt tmp.soft        文件类型是‘l’开头

是一个单独文件,通过记录源文件路径进而访问源文件数据    类似于快捷方式
                
    硬链接文件:创建:ln  tmp.txt tmp.hard

跟源文件没区别,通过相同的inode节点访问源文件数
            
    如果删除源文件,对于硬链接文件只是链接数-1,但是依旧可以访问;软链接文件则失效,无法访问。
    软链接文件可以跨分区建立,而硬链接不可以
    软链接可以对目录创建,硬链接不可以

3.动态库/静态库生成、使用

   动态库生成:动态库命名:lib是前缀    so是后缀,中间是库名字
                gcc -fPIC -c b.c -o b.o        //将每个c语言代码编译成自己的目标代码
                gcc --share b.o libmytest.so    //将所有的目标代码合到一起生成动态库
                -fPIC:编译选项--产生位置无关代码
                --share:连接选项--将所有目标代码连接到一起生成动态库而不是生成可执行程序

   静态库生成:静态库命名:lib是前缀    a是后缀,中间是库名字
                gcc -fPIC -c b.c -o b.o        //将每个c语言代码编译成自己的目标代码
                ar -cr libmytest.a    b.o //将所有的目标代码合到一起生成静态库
                ar:打开静态库
                -c:创建      -r:模块替换
   使用静态库:在linux下库文件只有被放到指定路径下才能被找到:/lib  /lib64  /user/lib  /user/lib64
   程序链接时链接库文件:1.向/etc/ld.so.conf.d/添加配置文件,再配置文件中添加库的搜索路径;
                                      2.将库文件直接放到指定路径下;
                                      3.设置环境变量:LIBRARY_PATH = . 库的链接搜索路径环境变量
                                        设置环境变量:LD_LIBRARY_PATH = . 程序运行时库的加载路径环境变量
                                      4.使用gcc的-L选项指定库的链接搜索路径
                                            gcc a.c -o main -L . -lmytest    gcc -L     用于指定库的链接搜索路径      -l指定链接名称

因为程序链接静态库时不需要依赖静态库存在,因此可以不用拷贝到/lib下,链接静态库时不需要静态链接-static,只需要保证指定路径下只有静态库就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值