静态、动态库制作使用

本质

库是一种可执行代码的二进制格式,可以被载入内存中执行

库分静态库和动态库两种.

一.概念

静态函数库

库的名字一般是libxxx.a

函数库的链接是在编译时期完成

所有相关对象与牵涉的函数库被链接合成一个可执行文件

运行时,与函数库再无瓜葛

动态函数库

库的名字一般是libxxx.so

函数库的链接是在运行时期完成

运行时,在运行环境中必须有相应的库

二.优缺点

静态函数库缺点

文件较大,浪费空间

库或者程序一方改变都使得重新编译

动态函数库优点

文件较小,节省空间.

库具有公用性,内存中始终只有一份代码

三.静态、动态链接库创建

2.静态库创建和使用.

3.动态库创建、使用.

-L     加载库文件路径.

-lfun 指明库文件名字.

static    创建静态链接库.

shared 创建动态链接库.

四.找到动态库方法

1.把库拷贝到/usr/lib和/lib目录下.

2.在LD_LIBRARY_PATH环境变量中加上库所在路径.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/C_pram/practice/lib/

3.修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾,并执行sudo ldconfig刷新.

.查看库中符号

使用ldd可查看可执行文件依赖于那些库.

静态、动态库制作使用,布布扣,bubuko.com

时间: 2024-10-13 07:38:26

静态、动态库制作使用的相关文章

VS2019静态/动态库制作 20199321

动态库 新建动态库项目 //pch.h #ifndef PCH_H #define PCH_H #include "framework.h" #endif //PCH_H #ifdef IMPORT_DLL #else #define IMPORT_DLL extern "C" _declspec(dllimport) #endif IMPORT_DLL int add(int a, int b); IMPORT_DLL int minus(int a, int b

linux 下的动态库制作 以及在python 中如何调用 c 函数库

动态库: 动态库又称动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件.动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数.函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译.链接并与使用它们的进程分开存储的函数.DLL 还有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.Wind

8.19 打造VIM IDE 静态库 动态库制作

vim配置文件位置: /etc/vim/vimrc ~/.vimrc 打造IDE步骤 ,ta   ,nn 测试 使用大型IDE ,da      生成文档说明 ,dd      生成函数说明 ,jd       跳转函数 ,o         关闭其他窗口 ,bf 显示已经打开的文件列表 gcc参数的使用: linux下制作动态库,静态库,下面是文件结构图: 制作静态库,静态库以 .a 结尾: src里的makefile 生成 静态库文件 libcalc.a: gcc -c *.c ar rcs

gcc静态动态库编译

centos5.8,g++4.1.2 最近操作比较多,小小笔记下 静态库,动态库编译和链接 //1.DynamicMath.h class DynamicMath{ public: static double add(double a, double b); static double sub(double a, double b); void print();}; //2.DynamicMath.cpp #include "DynamicMath.h"#include <ios

Linux库函数制作(静态库、动态库)

Linux库函数制作(静态库.动态库) 静态库与动态库 链接方式 链接分为两种:静态链接.动态链接 静态链接: 由链接器在链接时将库的内容加入到可执行程序中 静态链接的特点是: 优点: 对运行环境的依赖性较小,具有较好的兼容性 缺点: 生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间 库函数有了更新,必须重新编译应用程序 动态链接: 连接器在链接时仅仅建立与所需库函数的之间的链接关系,在程序运行时才将所需资源调入可执行程序 动态链接的特点: 优点: 在需要的时候才会调入对应的资

关于动态库的制作介绍

今天简单的介绍下动态的制作,主要介绍windows平台下借助vs进行动态库制作和使用,以及linux下动态库的制作和使用,闲话少说下面开始吧 在windows环境下进行制作 1.首先打开vs2013,新建一个win32控制台项目 第二步,新建选择动态库(dll)选项,生成空项目 第三步:将提供的源码文件添加到项目中,其中keymng_msg.h和keymng_msg.c是最外层封装的文件,底层实现是另外两个文件,所以只需要给用户提供动态库和keymng_msg.h就可以调用. 第四步:在需要导出

Linux 动态库 静态库

什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和Linux的本质不同,因此二者库的二进制是不兼容的.Linux操作系统支持的库函数分为静态库和动态库,动态库又称共享库.Linux系统有几个重要的目录存放相应的库函数,如/lib,/usr/lib;头文件放在/usr/include. 什么是静态库 静态库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都被整合进目标代码中,他的优点就显而易见了,即编译后的执

Linux编译过程与动静态库制作

一.Linux编译过程 预处理->编译->汇编->链接 二.预处理 作用: 宏展开 头文件包含 条件编译 布局控制,如#pragma:添加行号,方便后期问题查错. 编译命令 gcc -E  *.c  -o  *.i 三.编译 作用: 将预处理生成的代码进行词法.语法与语义进行解析,生成汇编代码. 命令: gcc -S *.i -o *.s 四.汇编 作用: 将汇编代码进行处理,转换成计算机能识别指令集,生成目标文件(.o/.obj). 命令: gcc -c *.s -o *o 五.链接

iOS 中的静态库与动态库,区别、制作和使用

如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名. 静态库与动态库的区别 静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝.动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内