静态库:静态库是在编译时期将库代码嵌入到可执行文件中的。这意味着每个使用静态库的程序都会有自己的一份库代码副本。静态库通常以.a为扩展名。 动态库:动态库是在程序运行时被加载的。多个程序可以共享同一个动态库,从而节省内存和磁盘空间。动态库通常以.so(Shared Object)为扩展名。 2. 在Linux中如何创建静...
2.动态库和静态库 1.1回顾 ldd**是一个Linux命令,用于打印出一个可执行文件或共享库的动态链接依赖关系。通过运行**ldd**命令,您可以查看一个可执行文件或共享库所依赖的其他库文件,以及这些库文件的路径。** 使用**ldd**命令的基本语法: 代码语言:javascript 复制 ldd <executable_file> <executable_file>**...
这里一定要注意so库的前缀必须为lib,然后将.so库链接到主程序main.c中,这里需要注意一下,因为动态库的特性,编译器会到指定的目录去寻找动态库,目录的地址在/etc/ld.so.conf.d/ 目录里的libc.conf文件里,你可以在里面加一行地址表示你so库的位置,更改完conf文件里的内容,记得输入命令行:ldconfig。 你还可以将...
动态库(.so文件)在程序运行阶段的作用是允许程序按需加载和卸载库文件,从而提高程序的灵活性和效率。在编译阶段,程序只需要连接动态库的符号信息,而不需要动态库的实际代码,因此生成的可执行文件体积通常比静态链接库更小。在运行阶段,程序会通过动态链接器将程序中引用的动态库加载到内存中,并将其映射到程序地址空间...
1、动态库:Linux中动态库的后缀名为.so 第二步:gcc -shared (C文件名.c) -o (lib动态库名.so) 创建一个.so文件,因为是64位的系统,不兼容,会报错 应该在指令前加-fpic 即gcc -fpic -shared (C文件名.c) -o (lib动态库名.so..
注意: 动态库编译出来的可执行文件在运行时依然需要链接动态库 三、总结 1)静态库 如何编译得到一个静态库 编译时的第一种办法:直接指定库文件和头文件路径 编译时的第二种办法:设置头文件和库文件所在路径为环境变量 使用LIBRARY_PATH —》设置静态库所在的路径为环境变量 ...
Linux静态库和动态库的命名规则 静态函数库 静态库的名字一般是libxxx.a,利用静态库编译生成的文件比较大,因为整个静态库所有的数据都会被整合进目标代码中。 a) 优点: 编译后,可执行文件不需要外部支持; b) 缺点: 生成的可执行程序大;静态库改变了,就需要重新编译可执行程序。
1.2库的种类 linux下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。
土木转码c++—第21天 | 说实话今天感觉内容很多,一下子从编译工具链讲到Makefile,gcc的各个阶段,预处理编译汇编链接,#ifdef的使用,gdb调试真的太难用了,为什么会有这么反人类的工具,完全用不明白[抓狂R][抓狂R]静态库,动态库的概念和生成只是做了了解,Makefile是重点,这个模式规则太抽象了,完全看不懂。学了几...
使用静态库: 原来的操作:gcc main.c add.c sub.c -o target 现在的操作:gcc main.c -o target -lstatic -L. --》头文件和库文件都在当前路径 -lstatic —>链接库 l —>link 库的格式:libxxx.a 链接库的格式:-lxxx -L. —>告诉编译器库文件的路径 ...