(一)静态库就是把一些*.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$

C静态库和动态库的制作的更多相关文章

  1. Linux下C++静态库、动态库的制作与使用

    参考博文:C++静态库与动态库 >> 静态库 1. 静态库的制作 a) 编辑 name.cpp 和name.h文件 b) $g++ -c name.cpp //注意带参数-c,否则直接编译 ...

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

    Linux库函数制作(静态库.动态库) 静态库与动态库 链接方式 链接分为两种:静态链接.动态链接 静态链接: 由链接器在链接时将库的内容加入到可执行程序中 静态链接的特点是: 优点: 对运行环境的依 ...

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

    如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库: ...

  4. 关于VS2013下制作和使用静态库和动态库

    关于VS2013下制作和使用静态库和动态库 引言 什么是库:库是写好的现有的,成熟的,可以复用的代码. 所谓静态.动态是指链接.将一个程序编译成可执行程序的步骤: 静态库在链接阶段,会将汇编生成的目标 ...

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

    如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库: ...

  6. [置顶] linux学习之静态库和动态库的制作与使用

    linux中静态库和动态库的制作与使用 一.静态链接库 1.首先编写模块程序example.c.example.h 2.使用gcc -c example.c -o example.o编译example ...

  7. linux系统环境下的静态库和动态库的制作

    linux系统下的应用编程需要系统提供的库文件,包括静态库或动态库.不管是静态库还是动态库,都是编译好的二进制文件.在我们编译程序时要链接的目标文件,静态库是链接的时候直接编译到程序里,和程序成为一体 ...

  8. linux 静态库和动态库(共享库)的制作与使用(注意覆盖问题)

    一.linux操作系统支持的函数库分支 静态库:libxxx.a,在编译时就将库编译进可执行程序 优点:程序的运行环境中不需要外部的函数库 缺点:可执行程序大 动态库:又称共享库,libxxx.so, ...

  9. Linux下制作和使用静态库和动态库

    概述 Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib. 静态函数库: 这类库的名字一般是libxxx. ...

  10. Linux下Gcc生成和使用静态库和动态库详解(转)

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

随机推荐

  1. spring boot使用@Aspect记录日志(请求参数,响应结果)

  2. LOJ2074/2157 JSOI2016/POI2011 Lightning Conductor 决策单调性DP

    传送门 我们相当于要求出\(f_i = \max\limits_{j=1}^{n} (a_j + \sqrt{|i-j|})\).这个绝对值太烦人了,考虑对于\(i>j\)和\(i<j\) ...

  3. zipkin的安装与搭建

    下载与部署 jar中yaml文件配置 启动传入并参数 web界面 目录 zipkin是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪. 下载与部署 wget -O zipki ...

  4. unbuntu 16.04 MS-Celeb-1M + alexnet + pytorch

    最近被保研的事情搞的头大,拖了半天才勉强算结束这个了.从熟悉unbantu 16.04的环境(搭个翻墙的梯子都搞了一上午 呸!)到搭建python,pytorch环境.然后花了一个上午熟悉py的基本语 ...

  5. Linux中su和sudo的用法整理

    一.为什么会有su和sudo命令? 主要是因为在实际工作当中需要在Linux不同用户之间进行切换.root用户权限最高很多时候需要root用户才能执行一些关键命令.所以需要临时切换为root用户.工作 ...

  6. c#-Json-Json字符串字段递归排序

    private static dynamic GetSorObject (Object obj) { if (obj is JArray) { var list = new List<dynam ...

  7. [jsp学习笔记] jsp基础知识 数据初始化、同步

  8. Manjaro 安装笔记

    双系统基本知识 [折腾日记]win10 ,ubuntu双系统安装避坑指南 Windows 下安装 Ubuntu 双系统(更新) rEFInd 总结注意点: 制作U盘启动盘一开始使用的是 Ulrstro ...

  9. JavaScript常见的输出方式

    1.通过弹窗的形式来输出 alert(需要输出的内容); alert("hello world"); confirm(需要输出的内容); prompt("请输入内容:&q ...

  10. vue 关于子组件向父组件传值$emit触发无效问题

    先贴上代码 子组件代码 //子组件请求接口,用自己封装的axios getupdate(){ this.$post({ url:this.$apis.unitupdate, postType:'jso ...