linux---静态库和动态库的制作和使用

静态链接和动态链接
静态链接:生成可执行代码,链接静态库(与代码位置有关的链接方式),需要将代码拷贝到我们的源代码中才能运行。
动态链接:生成可执行代码,链接动态库(生成与代码位置无关的库生成方式),只需要将函数的符号写入即可,只会拷贝动态库的符号。

动态库的生成
命名:动态库使用libxxx.so文件名字,其中的xxx就是动态库的名字

  • 将我们的.c文件生成.o文件
    gcc -fPIC -c c文件 -o o文件,其中-fPIC关键字是产生与位置无关的代码

  • 指定生成动态库而不是可执行文件
    gcc --shared o文件 -o 动态库名字(此时的动态库就是加上前缀后缀的名字)
    在这里插入图片描述
    静态库的生成
    命名:lib是前缀,.a是后缀 中间是库名称

  • 将所有的.c文件变成.o文件
    gcc -c c文件 -o o文件

  • 生成静态库
    ar -cr 库文件 o文件(-c只需要库名称,不需要前缀,-r模块替换)
    在这里插入图片描述静态库的使用
    在这里插入图片描述在编译的时候加上参数-l和-L
    -l:链接制定的库,此时我们只需要库的名称,不需要前后缀。
    -L:指定当前的路径,也就是库的路径
    实现加减法
    动态库的使用
    gcc c文件 -o 文件名 -l库名称

  • 将库文件放入到制定的目录下面,在动态链接库的时候有默认的搜索路径/lib,/lib64等等目录下面,可以将库文件放到 这些目录下就可以动态链接到我们的库文件

  • 设置我们的LIBRARY_PATH和LD_LIBRARY_PATH两个环境变量,此时我们就需要使用到我们的export命令

  • 在这里插入图片描述
    将LIBARARY_PATH设置成我们当前的目录下边,这就是指定库文件的搜索路径 在这里插入图片描述将LD_LIBRARY_PATH设置成我们的当前目录下边,这就是指定我们库文件的加载路径,当这样我们就可以直接使用我们的库文件,同样也实现了我们加减法的运算
    在这里插入图片描述

  • 在gcc生成可执行程序时直接指定库的搜索路径(只是库的搜索路径)
    -L:指定当前路径 -I:指定头文件的路径
    当我们移除上面的环境变量之后我们就不能链接到我们的库文件了
    在这里插入图片描述但是我们可以指定当前的文件路径和头文件路径,这仍然是可以成功的。
    在这里插入图片描述注意事项
    想要使用静态库不能使用static选项,因为-static是生成静态连接可执行程序,所有库都使用静态库(有时候我们只是需要使用一个静态库,而不是所有的都是用静态库),只要保证在-L指定的路径中只用相同名字的静态库就会链接静态库

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值