创建静态和共享 C++ 库

2023-11-26

我想建立静态库和共享库在一个项目中。

我知道需要从使用 -fpic 编译的对象创建共享库以获得位置无关代码,而静态库不需要这个。这一切都很好,我可以创建共享库或静态库。

我不想编译我的源代码两次以获得不同的目标文件,那么这通常是如何完成的?我读如何基于静态库获取共享库。但是,该示例显示了使用 -fpic 构建的静态库。这是要走的路吗?这方面有什么需要注意的吗?

有没有共同方法编译静态库和共享库?例如。首先静态并基于lib创建共享版本?

我很想知道是否有不同的方法以及选择时要考虑的因素。

我在 Linux 上使用 gcc4.4。

提前致谢!


事实上,我见过的常见方法是编译你的源代码两次,一次有 PIC,一次没有。如果不这样做,您要么会在静态库中产生 PIC 开销,要么会得到操作系统无法重定位的共享对象(实际上意味着它不会在库的多个客户端之间共享)。

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

创建静态和共享 C++ 库 的相关文章

  • 跳转到文件行c#

    我如何跳到文件中的某些行 例如 c text txt 中的第 300 行 using var reader new StreamReader c test txt for int i 0 i lt 300 i reader ReadLine
  • 为什么即使实际类型直到最后才定义,依赖名称也可以被认为是完整的

    考虑这个例子 https godbolt org z JQK tu template
  • 为什么 strcat() 之后字符串会被改变?

    这是源代码 int main char str dance char str1 hello char str2 abcd strcat str1 str2 printf s str output bcd why str更改后strcat s
  • nUnit Assert.That(method,Throws.Exception) 不捕获异常

    有人可以告诉我为什么这个检查异常的单元测试失败了 显然我真正的测试是检查其他代码 但我使用 Int32 Parse 来显示问题 Test public void MyTest Assert That Int32 Parse abc Thro
  • 如何修改道路网络的 L 系统?

    向大家问好 我目前正在研究道路网络的程序生成 并偶然发现了 L 系统算法 根据我从有关该主题的各种科学论文以及有关该主题的论文的进一步论文中了解到 算法更改为使用 全局目标和局部约束 其中修改所采取的路径以适应地形等输入值和人口密度 现在我
  • 从 C 调用带有字符串参数的 Go 函数?

    我可以从 C 调用一个没有参数的 Go 函数 按照下面的 https github com joeprivacy crefgo hello world 这通过编译go build和打印 Hello from Golang main func
  • 使用 Mono Cecil 添加 try-catch

    我正在使用 Mono Cecil 在另一个方法中注入代码 我想在我的代码周围添加一个 Try Catch 块 所以我写了一个带有 try catch 块的 HelloWorld exe 并反编译了它 Try Catch 的 Reflecto
  • 无法使用 process.ErrorDataReceived c# 获取进程错误输出

    我已经建立了Form我使用了一段时间的应用程序 现在我想捕捉StandardError我的流程及其standartOutput 我查看了答案SO and MSDN https msdn microsoft com en us library
  • MDI应用程序中父窗体的问题

    我使用按钮作为容器中的控件 父窗体 当子窗体出现时 父窗体中的控件 按钮 图片 标签 出现在子窗体上并将其覆盖 我看不到子窗体 有谁知道如何防止这种情况 我不想将这些控件设置为 Control Visible false 因为当我最小化子表
  • 接收UDP数据包

    假设我的程序通过网络 UDP 发送 1000 字节 它是否保证接收方将 一批 接收 1000 个字节 或者他可能需要执行多次 读取 直到收到完整的消息 如果后者为真 我如何确保同一消息的数据包顺序不会 混淆 按顺序 或者协议可能保证这一点
  • C++ 中“return *this”是什么意思?

    我正在将 C 程序转换为 C 但这部分让我感到困惑 return this 是什么意思 template lt EDemoCommands msgType typename PB OBJECT TYPE gt class CDemoMess
  • 为 C# 和 C++ 应用程序编写 DLL

    我需要编写几个 DLL 它们都可以从 C 应用程序和 C 应用程序访问 最初 我认为通过用 C 编写 DLL 并从 C 和 C 应用程序链接到它们可以节省时间 精力 这种方法明智吗 还是应该使用 C 编写 DLL 我的建议是在您最舒服的地方
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 包含不同类型的两个集合相交

    假设我有一个集合 称之为ids它是类型IEnumerable
  • File.Delete 进程无法访问该文件,因为该文件正在被另一个进程使用

    public bool DownloadMp3File DownloadedMp3 mp3 WebClient client new WebClient string filePath bool wasDownload false try
  • 非数字输入导致死循环

    由于某种原因 如果用户输入了错误的数据类型 例如 j 或 循环将停止要求输入并继续显示 Enter an integer gt 一遍又一遍 如何让程序处理错误的输入 为什么输入非数字值会导致如此奇怪的行为 define SENTINEL 0
  • gcc 编译器开关 (-mavx -mavx2 -mavx512f) 到底有什么作用?

    我在 C C 代码中明确使用了英特尔 SIMD 内在扩展 为了编译代码 我需要在命令行上指定 mavx mavx512 或类似的内容 我对这一切都很满意 然而 从阅读 gcc 手册页来看 并不清楚这些命令行标志是否也告诉 gcc 编译器尝试
  • LINQ 表达式树 Any() 位于Where() 内

    我正在尝试生成以下 LINQ 查询 Query the database for all AdAccountAlerts that haven t had notifications sent out Then get the entity
  • 如何在 if () 语句中声明变量? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 的条件或控制语句中声明和初始化变量 https stackoverflow com questions 1516919 declaring and initializing a variabl
  • 缓存行对齐(需要文章澄清)

    我最近在我的应用程序中遇到了我认为是错误共享的问题 我查了一下关于如何将我的数据与缓存行对齐 他建议使用以下 C 代码 C using C 0x alignment syntax template

随机推荐

  • Visual Studio - 用资源替换硬编码字符串的工具

    我有一个大型 ASP NET 项目 其中充满了硬编码字符串 现在必须将其提取到资源中 此类字符串几乎可以在任何地方找到 cs 文件 aspx 文件 ascx 文件等 并且文件数量巨大 我正在寻找一种工具 或任何方式 来一次找到所有这些硬编码
  • 从内存流读取存储的 PDF

    我正在使用 C 和 SQLServer 2012 开发一个数据库项目 在我的一个表单中 我有一个 PDF 文件 其中包含存储在表中的一些其他信息 这是成功的 但是当我想检索存储的信息时 我在显示 PDF 文件时遇到问题 因为我无法显示它 而
  • 具有多个数据库/DbContext 的 EF Code First 迁移

    我有两个数据库 每个数据库都有自己的 dbcontext 我设置了两个迁移配置 我可以为第一个数据库添加迁移 这很好 Add Migration DB1 InitialCreate ConfigurationTypeName DB1Conf
  • 使用 Jenkins Job-DSL 配置块将自定义步骤放置在特定位置

    我正在尝试使用 job dsl plugin 编写之前手动配置的大量 Jenkins 作业的配置脚本 这些作业的一种风格有多个步骤 其中包括使用 XShell 插件的几个步骤 job dsl 不直接支持这一点 不过 我应该能够通过使用自定义
  • 编写一个识别声音并执行操作的程序

    我想编写一个能够存储声音模式的程序 例如火车汽笛 喇叭 嘟嘟声 通过麦克风收听声音 然后在听到声音时采取一些行动 我懂一点Python 很早以前就用VB 编程过 我主要是一个 Oracle PLSQL 人员 该程序需要一个适度的用户界面 解
  • 消息通道是一个还是多个?

    我需要处理来自大约 30 个地址的电子邮件 我以一种将所有电子邮件发送到一个的方式来实现这一点DirectChannel之后到Receiver In Receiver我可以了解消息来自哪个地址 为此我创建了CustomMessageSour
  • jasperreport 5.0.1需要添加哪些依赖?

    I 升级jasper报告版本 from 4 5 0 至 5 1 0 当我安装插件时 它会抛出错误 例如缺少某些依赖项 我想使用 Maven 配置 JasperReports 5 1 0 Execution default of goal o
  • 安全 REST API,无需用户身份验证(无凭据)

    我已经为如何在没有用户身份验证的情况下保护 REST API 的安全而苦苦挣扎了 2 天 这是什么意思 在我的 AngularJS 应用程序中 我通过向我必须使用的现有服务 companydomain userinfo 发送 GET 请求来
  • Rails 路由 - 资源的自定义路由

    我目前正在构建一个 Rails 应用程序 我想坚持使用所有这些奇特的东西 例如 REST 和资源 但我想稍微自定义一下我的路线 我希望我的 GET 路线更加详细 我正在创建的应用程序是一个简单的博客 所以而不是GET posts 1我更喜欢
  • 在 CodeIgniter 中处理数据库错误的最佳实践

    我有一个带有唯一键的表 date userid 在我的网络应用程序数据库中 当我尝试插入现有记录时date and userid我收到以下错误 dupicate key in table 我在应用程序配置中打开了数据库调试器 因为我需要使用
  • 交错网格布局管理器动态列数

    我如何使动态列数RecyclerView using StaggeredGridLayoutManager 我已经有工作了RecyclerView 这是我需要做的屏幕 如果最大列是两个 那就很简单了 对于占据整个宽度的视图 setFullS
  • 将字符串的第一个字母大写,而不接触其他字母

    我想将字符串的第一个字母大写 但保留其余字母 我拥有的 赛车 我想要的是 赛车 然后只需将第一个字母大写str upper 并连接其余部分不变 string 0 upper string 1 Demo gt gt gt string rac
  • 测试 SQL 连接字符串可用性的最有效方法

    我有这段代码 我试图让它测试 SQL 字符串连接 但我不知道如何处理该部分connection Open true你能帮我解决这个问题吗 非常感谢您的参与 private void button1 Click object sender E
  • 使用 tcltk 在 R 脚本中添加弹出文本框

    我有一个很长的脚本来进行一些数据分析 它必须连接到多个数据库 其中一个数据库更新密码的频率往往比我想要的要高 因此我想添加一个弹出框供我输入当前密码 我找到了这个示例 但不了解足够的 tcltk 来查看当对话框关闭时 hwo 返回我的值 我
  • Rust 中的英文字母作为字符向量

    标题说明了一切 我想将字母表生成为字符向量 我确实考虑过简单地创建 97 122 的范围并将其转换为字符 但我希望有一种更好看的方式 例如 Python 的string ascii lower 生成的向量或字符串应包含字符 a z 对这类事
  • 如何使用knitr从r脚本函数生成多个文件

    我想从 r 脚本生成一些报告 我想避免从 rmd 文件编译时所需的重复 并且如果可能的话 我想从 r 脚本本身生成报告 该脚本具有一个函数 该函数应该从一系列数据帧生成每个报告 其中每个报告代表一个数据帧的处理 我只是不明白如何单独生成每个
  • JAVA中实例化的具体含义是什么

    我是一个JAVA新手 这次遇到了这个词叫做 在java中 在方法内部创建的类称为局部内部类 如果要调用局部内部类的方法 则必须实例化这个类在方法中 该词以粗体显示 谁能帮我解决这个问题 我知道这很尴尬 我应该进行更多研究 但我就是无法理解
  • 禁止从 Python 函数打印 stdout / stderr

    我有一个 Python 脚本 它使用我的雇主提供的一些封闭式 Python 函数 即我无法编辑这些函数 当我调用这些函数时 它们会将输出打印到我想禁止的 Linux 终端 我尝试通过重定向 stdout stderr orig out sy
  • 错误:找不到 npm 模块“时刻”

    我有一个 Meteor 应用程序 可以在本地主机上完美运行 但是当我将其部署到远程时heroku服务器 我收到以下错误 我正在实施this 请问有什么办法解决这个问题吗 2016 09 09T13 26 02 533532 00 00 he
  • 创建静态和共享 C++ 库

    我想建立静态库和共享库在一个项目中 我知道需要从使用 fpic 编译的对象创建共享库以获得位置无关代码 而静态库不需要这个 这一切都很好 我可以创建共享库或静态库 我不想编译我的源代码两次以获得不同的目标文件 那么这通常是如何完成的 我读如