将静态库转换为共享库(从 libsome.a 创建 libsome.so):我的符号在哪里?

2024-03-27

这个问题的标题是精确的欺骗 https://stackoverflow.com/questions/655163/convert-a-static-library-to-a-shared-library,但该问题的答案对我没有帮助。

我有一堆目标文件打包在静态库中:

% g++ -std=c++98 -fpic -g -O1 -c -o foo.o foo.cpp
% g++ -std=c++98 -fpic -g -O1 -c -o bar.o bar.cpp
% ar -rc libsome.a foo.o bar.o

我想从 libsome.a 生成 libsome.so 而不是目标文件,但该库是really裸露的骨头:

% g++ -std=c++98 -fpic -g -O1 -shared -o libsome.so libsome.a
% nm -DC libsome.so
0000xxxx A _DYNAMIC
0000xxxx A _GLOBAL_OFFSET_TABLE_
         w _Jv_RegisterClasses
0000xxxx A __bss_start
         w __cxa_finalize
0000xxxx A _edata
0000xxxx A _end
0000xxxx T _fini
0000xxxx T _init

静态库没问题,或者至少我完全能够将它链接到可执行文件并让它运行所包含的功能。另外,如果我从 foo.o 和 bar.o 创建 libsome.so ,一切都很好。


假设您使用的是 GNU 链接器,您需要指定 --whole-archive 选项,以便获得静态存档的所有内容。由于这是一个链接器选项,因此您需要 -Wl 来告诉 gcc 将其传递给链接器:

g++ -std=c++98 -fpic -g -O1 -shared -o libsome.so -Wl,--whole-archive libsome.a

如果你正在做一些更复杂的事情,你想要所有库 some 但只需要 libsome 所需的部分库支持,那么你会想要在 libsome 上使用它后关闭整个存档:

... -Wl,--whole-archive libsome.a -Wl,--no-whole-archive libsupport.a

如果您不使用 GNU 链接器,则需要查看您的链接器是否支持它以及它的名称。在 Sun 链接器上,它被称为-z allextract and -z defaultextract.

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

将静态库转换为共享库(从 libsome.a 创建 libsome.so):我的符号在哪里? 的相关文章

  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 如何在多线程C++ 17程序中交换两个指针?

    我有两个指针 pA 和 pB 它们指向两个大的哈希映射对象 当pB指向的哈希图完全更新后 我想交换pB和pA 在C 17中 如何快速且线程安全地交换它们 原子 我是 c 17 的新手 2个指针的原子无等待交换可以通过以下方式实现 inclu
  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 可访问性不一致:参数类型的可访问性低于方法

    我试图在两个表单之间传递一个对象 基本上是对当前登录用户的引用 目前 我在登录表单中有一些类似的内容 private ACTInterface oActInterface public void button1 Click object s
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • 数据表导出到 Excel <选择选项>

    在我的测试页中 我插入了一个选项列表 我需要仅将所选值导出到 Excel 但现在我的 Excel 结果包括 选择选项 的所有列表 My code
  • 如何使用 PHP 解析序列化数据?

    这是我的序列化数据的示例 a 10 s 7 contact s 1 1 s 19 profile affiliation s 23 University Inc s 18 profile first name s 3 Ben s 22 pr
  • 如何在shutil.copytree中编写忽略的回调函数

    我对 python 比较陌生 我正在尝试将一个目录复制到另一个维护结构的目录 我在用 shutil copytree src dst symlinks False ignore None copy function copy2 ignore
  • 无法读取未定义的属性“executeScript”

    我按照 chrome 扩展的 入门 教程进行操作 但出现以下错误 我搜索谷歌 有人说无法访问 content js 中的 executeScript 但错误来自 popup js 我曾尝试将 chrome scripting execute
  • 如何 npm 更新 package-lock.json 中的依赖项版本?

    正如标题所示 但是 如果可能的话 我不想在 package lock json 中手动重写版本字符串 我尝试了以下方法 如何将 package json 中的每个依赖项更新到最新版本 https stackoverflow com ques
  • 无法从“const jchar *”转换为“const wchar_t *”

    这是从 cpp 文件引发的错误 我正在使用 Visual Studio 10 和 windows7 32 位 并从 Eclipse Indigo 进行编译 AUWideString JNIEnv jni jstring jstr mJni
  • 如何在 Tkinter 中悬停后更改多个小部件的颜色?

    我正在尝试制作一个脚本 它将在悬停后更改小部件的背景和前景色 from Tkinter import root Tk Hover1 Button root text Red color bg white Hover1 pack Hover2
  • WPF。是否可以进行椭圆“矩形边界”命中测试?

    是否可以在椭圆边界矩形中进行命中测试 就像这张图片上一样 http s22 postimg org 6co1y7vap image png 您可以将它们都放入 border 网格中并检查是否被单击 XAML
  • ElementListUnion - 为通用列表对象提供重复注释的简单 xml

    我正在尝试使用 elementlistunion 反序列化列表字段 Customer java ElementListUnion ElementList inline false type Thing class ElementList i
  • 如何修复:项目中未使用 Google Sheets API

    我想建立一个问卷调查线聊天机器人并将答案传输到谷歌表 这是我的代码 导入操作系统 from flask import Flask request abort from linebot import LineBotApi WebhookHan
  • TFS 2010:使用内部版本号格式的标签名称

    我正在尝试使用 TFS 2010 设置构建 我希望构建编号格式类似于 BuildDefinitionName 版本 where 版本 是在 队列构建 对话框的 获取版本 字段中指定的版本 标签或变更集 如果没有具体版本 我想要的版本是lat
  • 等轴散点图

    我有一个如下所示的数据集 DataFrame lt data frame x runif 25 y runif 25 z sample letters 1 4 25 rep TRUE 并使用 Lattice 包 我可以用以下几行绘制等轴散点
  • CKEditor 安全最佳实践

    我在用http ckeditor com http ckeditor com 在我建立的一个小型 PHP MySQL 论坛中 我的问题 将用户创建的 HTML 像这样保存在数据库中然后在我的应用程序中重新显示它是否安全 我应该采取哪些预防措
  • 文件下载 - 如何控制文件名并尊重用户的偏好?

    我的网站上有一个 blob url 和一个按钮 用户可以单击该按钮 然后 Blob 将在新选项卡中打开 a class downloadlink target blank href blobUrl a 这有效 如果用户对此 blob 后面的
  • JS中如何获取图像的DPI?

    我在 HTML5 画布上工作来计算图像上两点之间的距离 我想将以像素为单位的距离转换为厘米 我找到了一个公式 像素 2 54 DPI 所以我想知道是否可以在JS中获取DPI图像属性 或者 我可以使用最简单的方法从像素计算厘米吗 谢谢 您所要
  • 计算元组大小

    我试图了解列顺序如何最小化 PostgreSQL 中的表大小 Example CREATE TABLE test column 1 int column 2 int column 3 bigint column 4 bigint colum
  • iBeacons 的三角测量示例

    我正在研究使用多个 iBeacons 进行 粗略 室内定位的可能性 该应用程序是一种 博物馆 设置 能够更容易地形成一个包含不同对象位置的网格 然后形成单独的信标 尽管这也不是不可能的 是否有使用多个信标对某种位置进行三角测量的示例 经验
  • 使用 itextsharp 将 Pdf 文件页面转换为图像

    我想使用 ItextSharp 库转换图像中的 Pdf 页面 知道如何转换图像文件中的每个页面 iText iTextSharp 可以生成和 或修改现有的 PDF 但它们不执行您正在寻找的任何渲染 我建议检查一下鬼脚本 https stac
  • .exp有什么用,.lib和.dll有什么区别?

    在编译和链接过程中 exp有什么用 lib 和 dll 有什么区别 我知道运行程序时会使用 lib 而链接和 dll将被使用 但 lib 和 dll 之间到底有什么区别呢 lib 文件是否不包含来自 dll 文件的函数的代码 使用两个单独的
  • 将静态库转换为共享库(从 libsome.a 创建 libsome.so):我的符号在哪里?

    这个问题的标题是精确的欺骗 https stackoverflow com questions 655163 convert a static library to a shared library 但该问题的答案对我没有帮助 我有一堆目标