交换库中的对象文件
swap object files inside a library
在我们使用cmake管理的项目中,我们使用静态库lib.a链接时。
因此,最终的可执行文件(静态链接(将由我们刚刚编译的的对象文件组成
a.o
b.o
c.o
和静态库lib.a
然而,其中一些文件(比如c.o
(可能(并不总是(已经在lib.a中。在这种情况下,我们希望使用我们刚刚编译的最新的c.o
,而不是已经在lib-a中的
这可能吗?我们如何使用Cmake做到这一点?
我的想法就像是取消对lib.a的归档,找出是否有任何对象文件已经在里面,然后再次归档(在这种情况下使用c.o
(,然后使用正常链接可执行文件
a.o
b.o
以及新制造的
lib.a
在Linux上:$ ar -ru lib.a c.o
应该这样做。这将更新lib.a
中的c.o
,前提是c.o
比lib.a
中已经包含的副本更新。
来自$ man ar
:
通常,ar r…会将列出的所有文件插入存档。如果你只想插入您列出的那些较新的文件与同名的现有成员相比,请使用此修饰符。u修饰符只允许用于操作r(替换(。特别地,组合qu是不允许的,因为检查时间戳会失去操作q的任何速度优势。
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在h文件中包含.o对象文件
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 从对象文件(.o)在macos上制作归档文件(.a文件)
- 检测 COFF 对象文件中C++内联符号
- 特定对象文件的单线程生成
- 使用对象文件读取三角形数据网格
- 链接时,不同静态库中的同一对象文件
- 防止临时对象文件访问 MSVC 中的磁盘
- 对在不同二进制文件中创建的对象文件的依赖关系
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 是否有正确的方法对生成文件中的对象文件使用模板命令?(C++)
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 使用 make 将对象文件放在特定目录中
- 如何从 3d 对象文件中获取 3d 坐标
- 为什么我的生成文件没有生成对象文件?
- 如何在OSX上正确创建C++对象文件(.o)
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- 使用nvcc(CUDA-RINSIDE)正确链接对象文件
- 链接节点本机模块中的提升库,对象文件需要替代库版本