Linux之静态库
命名规则:
lib + 库的名字 + .a
制作步骤
生成对应.o文件 .c à .o
将生成的.o文件打包 ar rcs + 静态库的名字(libMytest.a) + 生成的所有的.o
发布和使用静态库:
1) 发布静态
2) 头文件
文件如下图所示:

1) 生成对应的.o文件

2) 将所生成的.o文件打包,并移动到lib文件夹中

3) 验证生成的库文件数据

写一个测试代码main.c使用上图中的函数
/***
main.c
***/
#include<stdio.h>
#include"MyCalc.h" int main()
{
int a = ;
int b = ;
int result = a + b;
printf("a + b = %d\n",result);
return ;
}
编译运行:

静态库的优缺点:
查看静态库内容
nm 静态库名字
nm 可以查看可执行程序内容
优点:
- 发布程序的时候,不需要提供对应的库
- 库的加载速度比较快
缺点:
- 库打包到应用程序中,库的体积很大
- 库发生了变化,需要重新编译程序。
Linux之静态库的更多相关文章
- Linux下静态库生成和使用
Linux下静态库生成和使用 一.静态库概念 1.库是预编译的目标文件(object files)的集合,它们可以被链接进程序.静态库以后缀为”.a”的特殊的存档(archive file)存储. ...
- linux上静态库链接的有关问题
求大神,linux下静态库链接的问题有两个文件和一个库,a.c, b.c,libh.a,其中b.c里面会有调用libh.a的函数func1,现在将a.c, b.c,libh.a编译链接生成可执行文件, ...
- Linux上静态库和动态库的编译和使用
linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只 ...
- linux下静态库的制作
在我们编写软件的过程当中,少不了需要使用别人的库函数.因为大家知道,软件是一个协作的工程.作为个人来讲,你不可能一个人完成所有的工作.另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把 ...
- linux连接静态库
在项目中发现,使用 -l连接某个库时,如果存在同名的静态库(.a)和动态库(.so),默认会连接.so 那么如何指定连接静态库呢?如果有多个库,有些要连接静态库.有些要连接动态库,连接选项该如何指定呢 ...
- linux c: 静态库和动态库的生成和使用
场景: main函数需要两个接口,一个求和函数,一个打印函数. int sum(int i, int j); 求两个int数字的和. void show(int i, char* name); 打印i ...
- [转帖]Linux 的静态库与动态库
Linux下的静态库与动态库 2017年02月18日 09:17:13 LLZK_ 阅读数:10257 标签: linux动态库静态库区别使用 更多 个人分类: Linux学习笔记 所属专栏: Lin ...
- linux上静态库和动态库的编译和使用(附外部符号错误浅谈)
主要参考博客gcc创建和使用静态库和动态库 对于熟悉windows的同学,linux上的静态库.a相当于win的.lib,动态库.so相当于win的.dll. 首先简要地解释下这两种函数库的区别,参考 ...
- linux 动态静态库
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 1 静态库和动态库的区别1.1. 静态函数库 (1)静态函数库的名字一般是lib[name].a( ...
- linux下静态库和动态库一些东西
http://www.cnblogs.com/changefuture/archive/2011/12/22/2297460.html Linux 动态链接库和静态库示例 文件预览 文件目录树如下, ...
随机推荐
- MGR+Consul集群
[root@mydb1 ~]# wget https://releases.hashicorp.com/consul/1.4.0/consul_1.4.0_linux_amd64.zip[root@m ...
- 一文看懂java io系统 (转)
出处: 一文看懂java io系统 学习java IO系统,重点是学会IO模型,了解了各种IO模型之后就可以更好的理解java IO Java IO 是一套Java用来读写数据(输入和输出)的A ...
- 刚接触neo4j 问下 neo4j 生成的节点图形可以发布为纯网页方式么
6 回复 pangguoming 1楼•3 年前 你是想要neo4j web控制端的可视化功能吗? 那是用D3.js 做的,你用前端用D3.js配合Java自己做 或者 去下载neo4j 的前端 开源 ...
- Python集合的常用方法
注释很详细 collection={,,"apple","orange","cat"} # 查看一个数是否在集合中 in print(&qu ...
- tinymce富文本是在modal框中弹出显示的问题
记录一下,在用tinymce富文本的时候,由于是用在modal 上的,始终无法获取焦点,后来才发现问题出在tinymce在modal前创建了,所以导致这个问题,解决方案就是用 v-if="v ...
- JS中逗号运算符的用法
逗号运算符,它将先计算左边的参数,再计算右边的参数值.然后返回最右边参数的值. 原书举的例子不太好,无法解释上面那句话,这里另外提供一个: var a = 10, b = 20; function C ...
- 【Android】笔记
一.环境搭建 1. 下载JDK, JRE , 设置JDK 和 JRE环境变量 , PATH C:\jdk1.6.0_15\bin; JAVA_HOME C:\jdk1.6.0_15 重启电脑, ...
- 【SpringBoot】入门程序和机制分析
一.初建项目 首先要导入SpringBoot的Maven依赖 <!-- Inherit defaults from Spring Boot --> <!-- 这是SpringBoot ...
- What is libacl.so.1 ?
Google says, "This package contains the libacl.so dynamic library which contains the POSIX 1003 ...
- Linux目录结构以及一些常见操作
本章内容: Linux 目录结构 远程服务器关机及重启时的注意事项 不要在服务器访问高峰运行高负载命令 远程配置防火墙时不要把自己踢出服务器 指定合理的密码规范并定期更新 合理分配权限 定期备份重要数 ...