Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >把所有的.a合并成一个 合并静态库

把所有的.a合并成一个 合并静态库

作者头像
xcywt
发布于 2023-07-24 08:35:19
发布于 2023-07-24 08:35:19
5300
举报
文章被收录于专栏:xcywtxcywt

需求来源:

1.编译了Google的GRPC,发现有很多.a静态库,使用起来不是很方面。

2.于是乎,想着把所有的.a打包成一个 libgrpc_world.a 这样在项目引用的时候就很方便了。

按照以下步骤:

合并静态库

rm *.a #删除之前生成的文件 rm -rf *.*.f #删除之前生成的目录 cd ../build/ find . -name \*.a | xargs -I FILE cp FILE ../static_lib #copy所有a到指定目录 cd ../static_lib find . -name "*.a" | xargs -I FILE mkdir FILE.f #按所有.a文件名后,加.f,生成相应目录,用于保存.o。因为.o有重名,所以要分目录保存

rm libgrpc.a #grpc 和 grpc_unsecure用其中一个就行,两个都用会有符号找不到 rm libgrpc++.a #同上

for FILE in $(find . -name "*.a"); #遍历所有目录,解开.a到目录,生成.o do echo $FILE cd $FILE.f ar x ../$FILE cd .. done

find . -name "*.o" | xargs -n1 #打印一下所有.o。 find . -name "*.o" | xargs ar -rcs libgrpc_world.a #把所有.o生成.a #rm -rf *.*.f ranlib libgrpc_world.a

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Linux】静态库和动态库
静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。
YoungMLet
2024/03/01
1.2K0
【Linux】静态库和动态库
Linux C/C++工程中可生成 ELF、动/静态库文件的通用 Makefile(二)
今天对之前写的 Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件的功能。
typecodes
2024/03/29
1690
Linux C/C++工程中可生成 ELF、动/静态库文件的通用 Makefile(二)
Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile
最近写了一个*nix环境下的Makefile文件,支持编译C/C++,同时能够通过参数配置生成ELF目标文件、动态链接库(.so)和静态链接库(.a)文件。
typecodes
2024/03/29
5410
Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile
Linux环境下静态库和动态库的实现
在软件开发中,库是非常重要的组成部分。它们包含了一组可复用的函数和代码片段,用于提高开发效率和代码质量。在Linux系统中,库分为静态库和动态库两种。本文将介绍它们的实现方式,结合C语言代码进行说明,并详细解释其原理和使用方法。
ahao
2025/01/05
2001
【Linux】掌握库的艺术:我的动静态库封装之旅
在计算机编程中,库(Library)是一个预先编写的代码集合,包含了可以被其他程序调用的函数、类、变量和资源。库的主要目的是为了简化编程过程,提供常用功能的实现,促进代码重用,从而减少开发时间和提高软件的可靠性。
Yui_
2024/11/19
1390
【Linux】掌握库的艺术:我的动静态库封装之旅
库的概念:动态库与静态库
库是一组封装好的函数或方法,它们可以被多个程序复用,从而避免重复编写相同功能的代码。例如,标准的数学函数库、字符串操作库都属于常用的库。
DevKevin
2025/01/03
4180
[Bazel]自定义规则实现将多个静态库合并为一个动态库或静态库
为了实现如标题所述的将多个静态库合并为一个动态库,内置的 Bazel 规则是没有这个功能的,Bazel C/C++ 相关的内置规则有:
别打名名
2020/07/28
5.6K0
深入浅出动静态库
  当你在Linux系统上编写和运行程序时,动态库和静态库是两个非常重要的概念。它们不仅影响着程序的编译和执行效率,还直接关系到程序的可移植性和灵活性
用户11029129
2024/06/04
1760
深入浅出动静态库
静态链接库
库的存在,大大方便了我们进行编程。因为有了库,我们不必再从0开始,例如我们大多数人C语言写的第一个程序Hello World!都是用了库函数。以printf为例,我们只需要在程序源代码中包含<stdio.h>这个头文件之后,就可以使用printf函数了。这极大的方便了编程。同时库所带来的好处在于,头文件和库文件相结合的访问机制。有时候我们只想让别人使用自己实现的功能,并不想公开实现功能的源码,就可以将其制作为库文件,这样用户获取到的是二进制文件,而头文件又只包含声明部分,这样就实现了“将源码隐藏起来”的目的,且不会影响用户使用。
zy010101
2020/12/02
1.9K0
静态链接库
linux动态库和静态库
http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/
bear_fish
2018/09/20
12.9K0
【Linux】动静态库的制作与使用
注意动态库中生成 .o 文件时gcc 要带选项 -fPIC ,表示生成位置无关码。
aosei
2024/01/23
2660
【Linux】动静态库的制作与使用
如何制作属于自己的静态库?
在《一文带你了解静态库和动态库》一文中介绍了静态库的特点以及与动态库的区别。那么你有没有想过如何把自己写好的函数接口制作成静态库给别人用呢?本文教你如何制作属于自己的静态库。
编程珠玑
2019/07/17
1.2K0
动态库与静态库优缺点比较分析_c静态库和动态库的区别
我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护。我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级。
全栈程序员站长
2022/11/11
3.3K0
解锁动静态库的神秘力量1:从代码片段到高效程序的蜕变
本篇博主将带大家基于linux系统方面了解动静态库是什么,怎么创建以及如何使用等一些注意事项,希望能对大家在这方面的学习有所帮助。
羑悻的小杀马特.
2025/01/23
790
解锁动静态库的神秘力量1:从代码片段到高效程序的蜕变
Makefile常用模板
写Makefile大概是每一个合格的C/C++程序员的基本功吧,几乎所有C语言写的开源项目都会用Makefile或者类似的Cmake来组织和编译,可见这个是有多重要。不过说白了,Makefile其实下面就简单记录下Makefile的常用模板,并且附带了自己总结的注意点方便以后查找使用。下面这两个模板是用来搞guisan的。
mythsman
2022/11/14
5520
深入浅出链接库 | 静态库与动态库
不管是在 Windows 下开发,还是在 Linux 下开发,我们都会经常性的使用一些库文件,这些库文件的特点就是,我们可以看到接口的原型并通过这些接口来调用这个函数的功能,但是我们无法查看这个功能的实现。这就是库文件,功能提供者把头文件和库文件发布给我们,我们便可以根据头文件中的接口去调用库文件中实现的功能,并且对我们隐藏了功能实现的源码和细节。其实,链接库(动态库和静态库)并没有什么神秘的,本文就带你一起解开链接库的神秘面纱,让大家自己也可以动手制作动态库与静态库。
mindtechnist
2024/08/08
9840
深入浅出链接库 | 静态库与动态库
【Linux系统IO】六、动静态库
​ 我们之前学 gcc 的时候也有接触过一点动静态库的知识,现在要把它单独拿出来讲,主要是因为我们后面肯定在自己开发的时候需要包装自己的库,此时就需要有动静态库的原理知识和使用知识!
利刃大大
2025/03/11
1380
【Linux系统IO】六、动静态库
【Linux系统】代码星辰里的积木与流萤:动静态库的编程诗篇
本文将以清晰的逻辑脉络,带领读者从基础概念入手,逐步掌握动静态库的制作、生成、发布、使用及安装全流程。通过具体的代码示例与 Makefile 配置解析,结合编译链接原理与操作系统内存管理机制,深入理解静态库的 “空间换时间” 特性与动态库的 “运行时加载” 优势。同时,结合地址空间与程序执行原理,剖析库函数在内存中的定位与调用机制,帮助读者构建从理论到实践的完整知识体系。
suye
2025/06/01
770
【Linux系统】代码星辰里的积木与流萤:动静态库的编程诗篇
【Linux】动静态库
静态库是一种在编译阶段将库文件的内容直接整合到目标程序中的库文件形式。使用静态库后,库的代码会成为可执行文件的一部分,运行时不需要依赖外部库。
用户11305458
2025/01/09
2440
【Linux】动静态库
[操作系统] 动静态库制作与原理
库本质上是一组可执行代码的二进制形式,可以被操作系统加载到内存中执行。它的存在意义在于:
DevKevin
2025/03/07
2610
相关推荐
【Linux】静态库和动态库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档