Linux——动静态库

基础知识:动vs静

类型
加载时机 运行时 编译时
可复用性 多个文件只需要加载一份库文件 每个文件都需要加载一份文件
性能 链接次数越多越有优势 链接次数越少越有优势

代码编写

静态库

生成静态库
libmath.a:add.o sub.o
	ar -rc $@ $^

%.o:%.c
	gcc -c $<
使用静态库
头文件和工作目录同目录
  1. 头文件,库文件放到文件需要使用的目录下
#include<stdio.h>
#include"add.h"
#include"sub.h"

int main()
{
   
    printf("%d\n",add(1,2));
    printf("%d\n",sub(1,2));
    return 0;
}

头文件放到工作目录下
在这里插入图片描述
2. 指明库文件的位置
在这里插入图片描述

头文件和工作目录不同目录

只要能指明头文件路径就可以使用

#include<stdio.h>
#include"dy/add.h"
#include"dy/sub.h"

int main()
{
   
    printf("%d\n",add(1,2));
    printf("%d\n",sub(1,2));
    return 0;
}

动态库

生成动态库
libmath.so:add.o sub.o
	gcc -shared -o $@ $^

%.o:%.c
	# gcc -c $^ -o $@
	gcc -fPIC -c $<

fPIC 与位置无关码

使用动态库
  1. 头文件,库文件放到文件需要使用的目录下
  2. 生成可执行文件
    在这里插入图片描述
    原因解释

-I(大写i)——如果头文件不在目录下,会报错;这个命令告诉编译器头文件位置
-L——库文件位置
-l(小写L)——库文件名称
直接写明是告诉编译器怎么做,在运行的时候是告诉系统库文件的位置——需要在系统上设置库文件的位置


指明库文件位置的方法
  1. 直接将头文件+库文件添加进系统目录

头文件 —— /usr/include/
库文件 —— /lib64

  1. 系统目录下添加软链接

ln -s 目标库文件 新增软连接

  1. 修改LD_LIBRARY_PATH变量

unset 删除变量内容—— unset PATH
使用 : 将地址进行分割
export 设置环境变量—— export PATH=…

  1. /etc/ld.so.conf.d/目录下创建文件 ——永久有效
    在这里插入图片描述

使用ldconfig进行刷新,必要时使用sudo
在这里插入图片描述


参考文件

动静态库性能

相关推荐

  1. Linux静态

    2024-02-12 21:00:01       18 阅读
  2. Linux静态

    2024-02-12 21:00:01       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-12 21:00:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-12 21:00:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-12 21:00:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-12 21:00:01       20 阅读

热门阅读

  1. P1013 [NOIP1998 提高组] 进制位

    2024-02-12 21:00:01       43 阅读
  2. Shell之awk

    2024-02-12 21:00:01       39 阅读
  3. 2024春晚刘谦魔术C++实现

    2024-02-12 21:00:01       36 阅读
  4. MySQL 表的设计

    2024-02-12 21:00:01       39 阅读
  5. 网络安全红队基础建设与介绍

    2024-02-12 21:00:01       37 阅读
  6. 有缓冲channel和无缓冲channel

    2024-02-12 21:00:01       38 阅读
  7. 突破编程_C++_面试(基础知识(11))

    2024-02-12 21:00:01       30 阅读
  8. rtt设备io框架面向对象学习-看门狗设备

    2024-02-12 21:00:01       35 阅读
  9. 人工智能:从概念到现实的辉煌历程

    2024-02-12 21:00:01       34 阅读
  10. Lua Packages

    2024-02-12 21:00:01       41 阅读