静态库与动态库

程序库:主要提供功能重用,使得程序模块化,加快程序的编译,方便程序进行升级。

程序库分为静态库与动态库。

静态库:在可执行程序运行前就加入到执行码中,成为可执行程序的一部分(一般以lib*.a 作为库名后缀)。

a. 应用场景:对空间要求较低,对时间要求较高程序中。 

b. 制作:

    1.使用gcc -c 生成.o 文件

    2.使用 ar 工具制作静态库, 如:ar rcs libexapmple.a a.o b.o

c. 使用(编译静态库到可执行文件中):

    gcc hello.c libexample.a -o hello

 

动态库:在程序启动时,动态加载到可执行程序中,可以被多个执行程序共享使用(一般以lib*.so 命名)。

a. 应用场景:对空间要求较高,对时间要求较低。

b. 制作:

    1.使用gcc -c 生成.o 文件 (生成与位置无关代码), gcc 增加 -fPIC参数

    2.使用gcc -shared -o libdynamic.a a.o b.o

c.使用编译时指定动态库路径(l 指定库名, L指定库路径)

    gcc hello.c -o hello -ldynamic -L .

d. 使用库(建议使用【4】配置方法)

【1】通过环境变量:export LD_LIBRARY_PATH = 库路径 (当前会话生效)

【2】永久生效:将 【1】中命令写入.bashrc 文件中,source .bashrc 或重新进入终端

【3】拷贝库到/lib(标准库目录)

【4】配置文件法

     1)sudo vi /etc/ld.so.conf

     2) 写入动态库绝对路径,保存

     3)sudo ldconfig 使配置文件生效。

   查看可执行文件动态库依赖:ldd a.cout 查看

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值