码迷,mamicode.com
首页 > 其他好文 > 详细

静态库和共享库

时间:2018-12-09 16:27:46      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:lin   关系   bubuko   14.   别人   linux环境   dll   没有   指定   

概述

如果我们有些功能要给别人用,但是又不想公开代码实现,就可以将源代码编译成库提供。库分为共享库静态库

静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系。动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的副本,因此节省了很多内存。

静态库

静态库.a结尾 命名格式:libXXX.a,对应Window下的.lib文件

制作静态库

制作静态库就是先将所有的源文件编译成目标文件,然后通过ar rcs将所有目标文件打包成libXXX.a

$ gcc -c xxx.c
$ ar rcs libXXX.a *.o

静态库使用

技术分享图片

技术分享图片

共享库

共享库在Window下.dll Linux环境下.so结尾 Mac环境下dylib

制作共享库

目录如下
技术分享图片

$gcc -fPIC -c *.c
$gcc -shared -o libXXX.so  *.o

技术分享图片

技术分享图片

共享库使用

与静态库一样现指定库路径编译链接。
技术分享图片

动态库在执行时还是需要配置库的路径,需要配置动态库路径的环境变量,由于当前环境为Mac,后续在说具体解决方案。

静态库和共享库

标签:lin   关系   bubuko   14.   别人   linux环境   dll   没有   指定   

原文地址:https://www.cnblogs.com/CoderHong/p/10091020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!