具有同名目标文件的静态库 (ar)

2024-04-13

一点背景。假设我有源文件,它们需要最终存放在静态库中。假设有两个 cpp 文件a.cpp and a.cpp位于两个不同的子目录中。像这样的事情:

foo/a.h
foo/a.cpp
bar/a.h
bar/a.cpp

他们的内容并不冲突,而且完全不同。文件名是一样的。

现在,编译时我最终得到两个a.o当然是文件。

gcc -c foo/a.cpp -o foo/a.o
gcc -c bar/a.cpp -o bar/a.o

如果我现在创建一个静态库

ar rcs libfoobar.a foo/a.o bar/a.o

我可以看到静态库中的两个文件都在运行nm libfoobar.a。看起来不错。

Problem

我看到的问题是如果我运行ar单独命令foo/a.o and bar/a.o将它们放在同一个静态库中。现在后一个目标文件将覆盖前一个,所以运行时nm libfoobar.a我只是在库中看到了后一个对象。我猜这是由于相同的目标文件名造成的情况。

创建静态库时ar,我应该总是一次性组合所有对象还是运行也可以ar多次收集一部分对象,最终都在同一个静态库中?对于这个例子,我可以看到前者的作品,但看不到后者。

当一个人a.cpp更改并且静态库需要更改?将要ar找到正确的a.cpp去图书馆换?

这只是一个小例子,但请考虑一个包含许多文件且有些文件具有相同名称的大型项目。如果您现在想创建一个库,您也可能会遇到这种情况。

一般来说,这只是对库的组成方式、文件的命名方式的组织不善,还是还有其他东西可以让事情正常工作?


你必须想一想ar作为非常古老的文件存档器。它甚至不知道有关归档目录的任何信息。 (ar档案是扁平的)

(男人):ar - create, modify, and extract from archives

人 ar,选项r:

r 将文件成员...插入存档(带替换)。此操作与 q 的不同之处在于,如果满足以下条件,则删除任何先前存在的成员:他们的名字与添加的名字相匹配.

尝试运行一个ar t libfoobar.a你只会看到a.o文件因为ar未在存档中存储目录名称。

因此,您必须以不同的方式命名放入 ar 存档中的所有目标文件(UPD)如果你想用 ar 更新库中的一些目标文件

The ar rcs lib.a foo/a.o bar/a.o替换 lib.a 中找到的 a.o,但不会检查添加的文件是否存在名称冲突。

其他情况:ar rcs lib.a foo/a.o and ar rcs lib.a bar/a.o将在存档中存储第一个 a.o,然后是第二个ar会发现年纪大的a.o存档并替换旧文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有同名目标文件的静态库 (ar) 的相关文章

  • 通过 SocketCAN 进行 boost::asio

    我正在考虑利用升压阿西奥 http www boost org doc libs 1 49 0 doc html boost asio html从a读取数据套接字CAN http en wikipedia org wiki SocketCA
  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 根据 N 个值中最小的一个返回不同的结果

    不确定如何使标题更具描述性 所以我只是从一个例子开始 我使用下面的代码位 它从枚举中选择一个方向 具体取决于四个轴中哪一个与给定方向相比形成最小角度 static Direction VectorToDirection Vector2 di
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • 如何在 C# 控制台应用程序中将修饰符(ctrl、alt、shift)按键捕获为单个按键?

    Console ReadKey 仅在按下 正常 键时捕获输入 然后将修饰符 如果有 附加为键信息的一部分 如何将单个修饰键注册为输入 提供了一种解决方案这个链接 https blogs msdn microsoft com toub 200
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 是否有相当于 Clang/LLVM 的 .spec 文件,在哪里可以找到参考?

    The gcc驱动程序可以配置为使用特定的链接器 特定的选项和其他细节 例如覆盖系统头 specs files 当前 截至撰写本文时 GCC 版本 4 9 0 的手册此处描述了规范文件 https gcc gnu org onlinedoc
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • C++0x中disable_if在哪里?

    Boost 两者都有enable if and disable if 但 C 0x 似乎缺少后者 为什么它被排除在外 C 0x 中是否有元编程工具允许我构建disable if按照enable if 哦 我刚刚注意到std enable i
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 如何在Python中隐藏控制台窗口?

    我正在用 Python 编写一个 IRC 机器人 我希望为 Linux 和 Windows 制作独立的二进制文件 主要是我希望当机器人启动时 控制台窗口应该隐藏 并且用户不应该看到该窗口 我能为此做些什么呢 只需将其保存为 pyw扩大 这将
  • 将一个变量设置为等于另一个变量[重复]

    这个问题在这里已经有答案了 我有一些关于在 JavaScript 中将变量设置为等于另一个变量的问题 假设我们创建一个对象 a并设置b a var a fname Jon lname Smith age 50 var b a 我明白如果我们
  • 音色 `set-config!` 已经改变了数量,因此不知道如何使用它来将 std err/out 输出到文件

    我正在尝试使用https github com ptaoussanis timbre https github com ptaoussanis timbre记录到文件而不是控制台 以下是我找到的一些有关如何执行此操作的文档 The defa
  • 为 libstdc++ 生成 CTAGS(来自当前 GCC)

    I know 你完成了我 https github com Valloric YouCompleteMe基于 LLVM 但我想使用OmniCppComplete http www vim org scripts script php scr
  • 操作码的十六进制值

    我创建了一个非常简单的汇编程序 可以在 DOS 中打印字母 a 我在十六进制编辑器中打开它 结果是这样的 汇编代码 mov ah 2 mov dx a int 21h 十六进制代码 B4 02 B2 61 CD 21 我想了解它是如何生成的
  • 在 pdf 中按宽度调整内容

    渲染为 pdf 时 我需要 html 页面为打印宽度的 100 否则内容会被切断 是否有捷径可寻 我想出了一个解决方法 它在渲染后获取 html 宽度 然后设置缩放系数以强制正确的宽度 var page require webpage cr
  • 如何确定视图的列是派生的还是常量?

    假设我有下表 create table t Item ItemID int not null identity 1 1 constraint PK Item primary key Description varchar 256 not n
  • Apache AVRO 与休息

    我正在评估将 Apache AVRO 用于我的 Jersey REST 服务 我将 Springboot 与 Jersey REST 结合使用 目前我接受 JSON 作为输入 并使用 Jackson 对象映射器将其转换为 Java Pojo
  • Laravel 4:在包中部署自定义 artisan 命令

    我开发了一些自定义 artisan 命令 以便更轻松地与我的包一起使用 是否可以将 artisan 命令包含到包中以便于部署 如果可以 怎样做 Thanks 在你的包结构中有一个命令集
  • 如何获取包含越界对象的绘图尺寸

    我可以这样计算图的高度 library ggplot2 library egg library gridExtra g lt ggplot iris aes x Species y Petal Length stat summary geo
  • 如何在 Laravel 中检索 Mailgun 传递的消息

    在我的 Node js 应用程序中 我遵循了 Mailgun 文档https documentation mailgun com en latest quickstart sending html send with smtp or api
  • GitHub 页面和相对路径

    我创建了一个gh pages我正在 GitHub 上开发的一个项目的分支 我使用 Sublime text 在本地创作网站 我的问题是 当将其推送到 GitHub 时 所有指向 javascrips 图像和 css 文件的链接都无效 例如
  • 如何存储我的网络应用程序的指标?

    我需要为我的网络应用程序存储更多指标 需要随着时间的推移跟踪和比较用户行为和其他条件 有些记录有与之关联的时间戳 有些则没有 因此 按需查询指标可能并不总是合适 我认为需要的是我编写然后存储在某个地方 数据库 文件 的某些分析查询 通过 c
  • find_package 用于使用 Visual Studio 进行调试和发布

    我正在为如何将第三方库包含在我的 cmake 项目中而绞尽脑汁 目前 我构建了 Poco 和其他一堆 它们都生成各自的 Config cmake 我将其与 find package 一起使用 我有一个包装构建脚本 用于构建所有依赖项并将它们
  • 将 Scala Iterable[tuple] 转换为 RDD

    我有一个元组列表 String String Int Double 我想将其转换为 Spark RDD 一般来说 如何将 Scala Iterable a1 a2 a3 an 转换为 Spark RDD 有几种方法可以做到这一点 但最直接的
  • M2Eclipse,META-INF/MANIFEST.MF

    我在 Eclipse 中使用 M2Eclipse 插件 而且不知道什么原因 每次在Eclipse中导入Maven项目时 总是生成一个空的 src main META INF MANIFEST MF 文件 jar 打包的项目 src main
  • Web API 2、OWIN 身份验证、SignOut 不注销

    我正在做一些研究 以期使用 Bearer 令牌作为身份验证机制 即 AngularJS UI 通过 Web API 2 项目中的 OWIN 进行身份验证 我的登录工作正常 角色信息等一切都很好 但我无法获取用于注销的令牌 我的启动配置是这样
  • 在这种情况下是否可以创建一个最小完美哈希函数?

    我想创建一个哈希映射 或其他结构 如果您有任何建议 来存储键值对 这些键将在创建地图的同时一次性插入 但我不知道键是什么 任意长度的字符串 直到运行时 当我需要创建地图时 我正在解析这样的查询字符串 x 100 name bob color
  • Gekko优化包和numpy反函数

    我使用 Gekko 为一组反应动力学选择 A 最优实验 目标函数是最小化迹 inv Z Z 其中 Z 是通过将其参数周围的 ODE 线性化而计算出的尺度灵敏度矩阵 正如您所看到的 目标函数涉及 Z Z 的倒数 我使用了 numpy 甚至 s
  • 具有同名目标文件的静态库 (ar)

    一点背景 假设我有源文件 它们需要最终存放在静态库中 假设有两个 cpp 文件a cpp and a cpp位于两个不同的子目录中 像这样的事情 foo a h foo a cpp bar a h bar a cpp 他们的内容并不冲突 而