IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 动态库与静态库的使用 -> 正文阅读

[C++知识库]动态库与静态库的使用

库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。在 Linux 下有静态库和动态库。因此编译出来的体积就比较大。

静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态库了。因此编译出来的体积就比较大。以 lib 开头,以.a 结尾

动态库(动态库也叫共享库)在程序编译的时候不会被链接到目标代码里面,而是在程序运行的时候被载入的。所以程序在运行的时候需要动态库了。因此编译出来的体积就比较小。以 lib 开头,以.so 结尾。

静态库的制作步骤:

  1. 编写或准备库的源代码
  2. 将源码.c 文件编译生成.o 文件
  3. 使用 ar 命令创建静态库
  4. 测试库文件

动态库制作步骤:

  1. 编写或准备库的源代码
  2. 将源码.c 文件编译生成.o 文件
  3. 使用 gcc 命令创建动态库
  4. 测试库文件

静态库

新建 mylib.c 文件:

#include<stdio.h>

void mylib(void);

void mylib(void)
{
  printf("This is mylib\n");
}

在 Ubuntu 编译

编写测试代码 test.c

#include <stdio.h>

void mylib(void);

int main(void)
{
  mylib();
  return 0;
}

编译测试文件 test.c

运行测试 a.out

动态库

新建 mylib.c 文件

#include<stdio.h>

void mylib(void);

void mylib(void)
{
  printf("This is mylib\n");
}

在 Ubuntu 编译

编写测试代码 test.c

#include <stdio.h>

void mylib(void);

int main(void)
{
  mylib();
  return 0;
}

编译测试文件 test.c

-l:指定动态库的库名
-L:指定动态库的查找位置。
-L . 表示在当前目录下去查找

运行测试 a.out

在动态库使用是,系统会默认去/lib,/usr/lib 目录下去查找动态函数库,如果我们使用的库不在里面,就会提示错误。解决这个问题有三种方法。

第一种方法:

将生成的动态库拷贝到/lib 或者/usr/lib 里面去,因为系统会默认去这两个路径下寻找。

第二种方法:

把我们的动态库所在的路径加到环境变量里面去,比如我们动态库所在的路径为/home/test,我们就可以这样添加,但是这种方法只在当前设置的窗口有效。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/topeet/debug/linux_

我们加入环境后,运行 a.out

第三种方法:

修改 ubuntu 下的配置文件/etc/ld.so.conf,我们在这个配置文件里面加入动态库所在的位置,然后使用命令 ldconfig 更新目录。

我们输入以下命令编辑/etc/ld.so.conf 文件,如下图所示:

修改完文件保存退出,输入 ldconfig 更新目录。运行测试如下图所示:

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:24:29  更:2022-04-26 11:26:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:45:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码