库:一组别人实现好的函数接口
1.命名方法 
静态库 : libname.a 
动态库 : libname.so 
注意   :库的名字是name 
2.链接动态库和静态库的区别 
预处理,编译,汇编,链接(连接库)
(1)链接静态库 
如果链接的是静态库,编译器将程序中调用的库中函数接口的实现代码链接到可执行
文件中,生成可执行文件体积大.程序运行的时候,不需要库支持。 
(2)链接动态库 
如果链接的是动态库,编译器将程序中调用的函数所在的库的名字记录在可执行文件中
,生成可执行文件体积小.程序运行的时候,需要[OS]加载动态库。
3.制作静态库
(1)将.c文件编译成.o文件  
gcc -c file.c -o file.o 
.... 
(2)将.o文件打包成静态库 
ar -cr libname.a  *.o 
4.gcc 链接库的参数 
注意:gcc 默认到/usr/lib 和/lib链接库,gcc只能识别它自带的库,第三方库[不是编译器自带库]无法识别 
-L  告诉编译器库的路径 
-l  告诉编译器库的名字 
例如:
gcc main.c -L 库的路径 -l库的名字
5.制作动态库 
(1)将.c文件编译成.o文件  
gcc -c file.c -o file.o 
.... 
(2)将.o文件打包成动态库 
gcc -shared *.o -o libname.so 
---------------------------------------------------
查看可执行文件所依赖的动态库:
readelf -a  可执行文件名 | grep "Shared"
----------------------------------------------------
6. OS 加载库的时候,默认的搜索路径 
(1)环境变量LD_LIBRARY_PATH所包含的路径 
添加环境变量:
export  环境变量名=$环境变量名:新的路径
注意:
直接通过export命令,是临时添加,如果永久有效,将命令写道配置文件
<1>用户主目录下的.bashrc文件 [当前登录的用户打开终端的时候会执行一次]
<2>/etc/bash.bashrc          [所有的用户打开终端的时候都会执行一次]
例如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/linux/mylib
(2)/usr/lib 和 /lib 
7.当静态库和动态库同时存在,编译器默认链接的是动态库 。 
如果想强制链接静态库,需要加上 -static 参数  
8.给库加上版本号 
libtest.so.0.1 , libtest.so.0.2 
让编译器链接库成功,必须创建创建一个软链接 
ln -s libtest.so.0.2  libtest.so 

动态库和静态库的创建相关推荐

  1. 使用g++创建动态库和静态库及其相关探索

    使用g++创建动态库和静态库及其相关探索 目录 使用g++创建动态库和静态库及其相关探索 0.前期准备 1.静态库创建及链接 2.动态库创建及链接 3.相关问题 移动动态库后仍不能运行 0.前期准备 ...

  2. 动态库、静态库的创建及使用

    文章目录 1. 库 2. 静态库 与 动态库 区别 3. 静态库的创建和使用 静态库的创建和使用的命令 4. 动态库的创建和使用 动态库创建和使用的 命令 5. 让程序找到动态库(三种方法) 1. 库 ...

  3. Linux 动态库与静态库的概念及创建使用

    动态库与静态库 库的链接方式:gcc / g++编译器默认的链接方式是动态链接 动态链接:链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序中记录了库中函 ...

  4. linux代码动态分析软件,举例分析Linux动态库和静态库

    函数库分为静态库和动态库两种.创建Linux静态库和Linux动态库和使用它们在这里将以举例的形式详述一下.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不 ...

  5. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  6. Linux中的动态库和静态库(.a/.la/.so/.o)

    为什么80%的码农都做不了架构师?>>>    Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序 ...

  7. 举例分析Linux动态库和静态库

    转自:http://www.xxlinux.com/newxxlinux/development/gui/2012-01-05/499.html 函数库分为静态库和动态库两种.创建Linux静态库和L ...

  8. 1. CMake 系列 - 从零构建动态库和静态库

    目录 1. 文件目录结构 2. 库文件源代码 3. 编译生成库文件 1. 文件目录结构 首先创建如下目录结构: └── lib├── build # ├── CMakeLists.txt└── src ...

  9. 动态库、静态库、运行时库、引入库之间的区别

    动态库.静态库.运行时库.引入库之间的区别 杂集.捡对口味的看看吧. 转自:http://lingualspark.blog.sohu.com/94785899.html 运行时库:Unix中一个典型 ...

最新文章

  1. linux嵌套字幕工具,Linux(NAS通用)下自动匹配射手字幕脚本
  2. codeigniter 中使用 phpexcel
  3. Sprinig Boot + Redis 实现接口幂等性,写得太好了!
  4. OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例(附完整代码)
  5. 国家有线网挂牌时间再度推迟 预计为2012年底
  6. java赋值运算符_11.Java赋值运算符
  7. python连接mysql失败_python连接mysql失败怎么解决
  8. 基于vue axios element-ui 的 demo
  9. word删除分页符_5个Word删除空白页的方法,简单又高效,总有一个能帮你轻松秒杀...
  10. 《深度学习课程》-吴立德教授-复旦大学
  11. WdatePicker的一些用法
  12. RTCM3.1/3.2
  13. 【Java 判断素数的几个方法】简单理解
  14. 计算机考研复试笔试题库,苏州大学计算机考研复试真题和复试参考书目
  15. 做项目管理有pmp证书了,到底有没有必要再考个prince2?
  16. WEB打印-网页打印功能(带分页、可多页打印)
  17. 点击“安全删除硬件并弹出媒体”不显示可删除移动设备
  18. 什么是UI Path?
  19. 区块链教程(1)——区块链原理
  20. 最新淘宝店铺宝贝PC电脑端隐藏屏蔽技术

热门文章

  1. git本地ben远程分支_git 本地分支与远程分支
  2. ad域帐号登录提示无法处理请求_面试官:说一下单点登录的几种实现方式
  3. mysql增加布尔字段_如何将布尔字段添加到MySQL?
  4. Kafka:Kafka核心概念
  5. 嵌入式linux内核oops,Linux编程时遇到Oops提示该如何排查?
  6. java类和对象实例对象_Java类、对象和实例的理解
  7. php删除禁用函数,百度云平台封禁的PHP函数列表 PHP禁用函数列表(转)
  8. 折纸计算机大全,神之折纸电脑版
  9. js regex var highlight
  10. loj.ac:#10024. 「一本通 1.3 练习 3」质数方阵