(一)静态库就是把一些*.o的文件集合起来;以*.a结尾打包;做成的lib库文件;专门放到lib目录下

静态库的制作:

1.制作*.a文件

把之前src/mymath.c 的源文件 编译成单独的o文件

gcc -o obj/mymath.o -Iinclude -c src/mymath.c
gcc -o bin/mymath_test2 -Iinclude src/mymath_test.c obj/mymath.o
必须编译成.o的模块  

ar rcs lib/mymath.a obj/mymath.o //后面可以有多个.o文件
r:表示压缩 rar

c:表示create 创建静态库

s:表示产生索引

创建库文件名字前面最后加上lib前缀。

静态库的使用:

gcc -o 可执行文件 调用者的目标文件.o -Ldir -lib库文件名
或者
gcc -o 可执行文件 -ldir 调用者的c源文件.c -Ldir -lib库文件名
注意-Ldir是大写的;这个就是库的路径;后面-l小写的文件

例子:调用一个 mymath.a静态库

第一步:mymath_test.c 调用静态库libmymath.a

gcc -o bin/mymath_test123 src/mymath_test.c -Llib -lmymath

如果主调用程序用到了头文件 要引入头文件路径 -Iinclude 是头文件目录

gcc -o bin/mymath_test88 -Iinclude src/mymath_test.c -Llib -lmymath

第二步:把mymath_test.c 也打包成一个.o目标文件

gcc -o obj/mymath_test.o -Iinclude -c src/mymath_test.c
然后调用目标.o文件 链接静态库

daokr@ubuntu:/mnt/hgfs/mystudy/clession$ gcc -o bin/mymath_test77 obj/mymath_test.o -Llib -lmymath
daokr@ubuntu:/mnt/hgfs/mystudy/clession$ ./bin/mymath_test77
pls enter i and j:4 5
add result:9
A的ASII码:65
daokr@ubuntu:/mnt/hgfs/mystudy/clession$

最新文章

  1. logback配置详解2<appender>
  2. SQL获取本周、本月、本季度的记录的语句
  3. JS(ajax笔记)
  4. 由STL所想到的 C++显示调用析构函数
  5. Equal
  6. docker-compose安装使用
  7. Inside Kolla - 02 Kolla 是什么
  8. 教你使用Android SDK布局优化工具layoutopt
  9. c#调用命令行遇到带空格的路径
  10. C# #if DEBUG
  11. VS2013启动项目调试的时候会启动本地IIS
  12. 怎样解决No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
  13. DVWA 黑客攻防演练(七)Weak Session IDs
  14. sbb指令
  15. ccf-20171203 Crontab问题
  16. iOS开发-- 一个苹果证书如何多次使用
  17. hdu3642 Get The Treasury 线段树--扫描线
  18. Mysql数据库操作复习,增删改查
  19. Class^=,Class*= ,Class$=含义(转)
  20. What the difference between __weak and __block reference?

热门文章

  1. [UOJ #140]【UER #4】被粉碎的数字
  2. PKUSC2019题解
  3. DevExtreme学习笔记(一) DataGrid中注意事项
  4. 【洛谷 P2597】 [ZJOI2012]灾难(LCA)
  5. Linux环境下安装mysql服务
  6. Vue2.0的核心思想
  7. python爬虫 urllib模块url编码处理
  8. mac环境下Android 反编译
  9. vs code 调试设置
  10. Android多种方式实现相机圆形预览