即使链接器可以找到该库,为什么我也会收到“DSO 丢失”错误?

2024-02-06

我正在针对我编写的共享库编译一个程序。这个库又依赖于Boost::program_options(以及其他图书馆)。当我编译程序时,我当然需要提及我的库,但我收到 DSO 错误:

g++ ism_create_conf.cc -o ism_create_conf -lglsim_ol -lglsim -lhdf5 -lgsl

/usr/bin/ld.real: /tmp/cc9mBWmM.o: undefined reference to symbol_ZN5boost15program_options8validateERNS_3anyERKSt6vectorISsSaISsEEPSsi'
//usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.55.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我知道如果添加的话错误就会消失-lboost_program_options。我不明白的是

  1. 即使我的程序不直接调用 Boost(仅通过我的 glsim 库),为什么我必须这样做。

  2. 为什么链接器想要-lboost_program_options当它实际上自己找到正确的库(和位置)时(请参阅错误消息的第二行)。

情况类似于所问的情况,例如here https://stackoverflow.com/questions/19901934,但我问的是不同的问题:我知道解决方案是在命令行中提及库,我想知道why我必须这样做即使链接器已经知道图书馆在哪里。显然我不明白共享库是如何工作的,在我看来,当我使用其他共享库时,这些库可以自动调用其他共享库they需要。然而我构建的共享库不具备这个能力。


现代发行版(例如Ubuntu Natty 及更高版本 https://lists.ubuntu.com/archives/ubuntu-devel/2010-November/031991.html) 使能够- 如所须 http://www.bnikolic.co.uk/blog/gnu-ld-as-needed.html默认情况下在其工具链中标记。副作用之一是链接器更严格地跟踪库的顺序(不确定为什么这样做,可能是为了匹配静态库的情况)。

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

即使链接器可以找到该库,为什么我也会收到“DSO 丢失”错误? 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include

随机推荐

  • 如何使用AngularJS动画实现翻转效果?

    实现这一目标的最佳方式是什么翻转效果 http davidwalsh name demo css flip php使用 AngularJS 动画 我希望点击时出现翻转效果 每次单击它时 它都应该翻转到另一侧 我想 理想情况下 我正在寻找使用
  • MySQL ALTER TABLE 在非常大的表上 - 运行它安全吗?

    我有一个 MySQL 数据库 其中有一个包含 400 万行的 MyISAM 表 我大约每周更新一次此表 添加大约 2000 个新行 更新后 我将表更改如下 ALTER TABLE x ORDER BY PK DESC 我按主键字段按降序对表
  • 使用实体框架时,为什么我的带有数据注释的列不会映射

    我有一堂课 看起来像这样 public class Analyst Column Internal ID public int ID get set if this is named like the column it works Col
  • Apache Tomcat WebService 中的服务出现故障

    在 Web 服务中添加此方法后 我的 apache tomcat Web 服务出现错误服务 public String getAllEvent JSONArray jsonArray new JSONArray try Class forN
  • 在 sqlalchemy 中定义列 func.count 的名称

    有两张桌子 Tbl1 Table tbl 1 metadata Column id Integer primary key True Column user id Integer ForeignKey user id nullable Fa
  • 如何在 Node.js 中获取服务器目录之上的文件

    我正在尝试使用 node js 服务器提供音频文件 问题是 我希望能够获取计算机中的任何音频文件 但我不知道如何使 html 中的音频元素与服务器上方的目录一起使用 有this https stackoverflow com questio
  • Laravel classloader.php 错误无法打开流:没有这样的文件或目录

    我能够正常运行 php artisan migrate 如果我使用 Request all 我能够获取所有表单输入 但是当我尝试将数据添加到我的 mysql 数据库表时 我收到以下错误 ErrorException in ClassLoad
  • Eclipse 片段项目是否有与 BundleActivator 等效的工具?

    我正在构建一个 Eclipse 插件 它在常规插件项目中提供一组核心功能 我通过片段项目提供的可选功能 但我需要片段在启动时向主插件注册自己 我无法在片段项目中拥有 Bundle Activator 所以我想知道是否有一些替代机制来声明一个
  • 回归分析中的分类特征数据和序数特征数据差异?

    在进行回归分析时 我试图完全理解分类数据和序数数据之间的差异 目前 已经明确的是 分类特征和数据示例 颜色 红 白 黑为什么分类 red lt white lt black逻辑上是不正确 序数特征和数据示例 状况 旧的 翻新的 新的为什么序
  • 带元胞数组的 Matlab 动态字段名结构

    我如何使用动态字段名访问以下结构路径 var refxtree CaseDefinition FlowSheetObjects MaterialStreamObjects 8 MaterialStreamObjectParams Press
  • 在使用 Jest 进行测试之前等待 React 组件状态更新

    我有一个组件handleAdd功能 该函数调用一个库 该库又调用axios并返回一个承诺 一旦解决了这个问题 handleAdd 方法更新组件状态 进而渲染子组件 换句话说 它首先检查服务器以确保在本地显示该项目之前已添加该项目 使用 Je
  • Python3 将所有字符转换为 HTML 实体

    我正在使用Python3 我想知道是否有一个模块或默认函数可以将文本的所有字符转换为html实体 甚至字母和数字 因为我不想为此制作翻译映射 解决了 正如 justhalf 告诉我的 我通过创建这个函数找到了解决方案 def htmlEnt
  • 如何修复“对象不是此领域架构的一部分”

    我正在尝试设置一个使用Realm数据库 但我似乎无法使其工作 我也禁用了Instant Run但这也没有解决问题 这是我的代码文件 应用程序级别的build gradle apply plugin com android applicati
  • 如何在 OMNeT++ 中创建随机连接图?

    我正在尝试创建一个具有随机连接节点的图 节点应该随机连接 如果一个节点已经连接到另一个节点 则不应使用不同的连接再次连接到同一节点inout port 在文档中 https doc omnetpp org omnetpp manual se
  • 如何用c语言编写一个简单的malloc函数

    作为操作系统的作业 我们必须用 C 编程语言编写自己的 malloc 和 free 代码 我知道如果我要求它的代码 我就没有必要学习 我面临的问题是不知道在哪里包含初始化 50000 字节的 char 数组并使两个列表空闲和使用 在我的函数
  • 如何生成动态数组

    我必须生成一个动态菜单来从数据库中获取数据并将结果存储在动态数组中 如何在 php 中实现这一点 PHP 中的数组默认是动态的 只需向其中添加更多项目即可 如本例所示 假设数据库为MYSQL result mysql query menu
  • json.decode() 输入意外结束(在字符 1 处)

    我在登录用户时遇到了 flutter 中的匿名关闭错误 前几天还可以 但现在不行了 不知道为什么 所以请提前提供帮助和感谢 每当我填写详细信息并点击登录按钮时 它都会抛出以下错误 E flutter 2914 ERROR flutter s
  • 如何使用 ReactJS 嵌入 Gist

    我正在尝试使用 ReactJS 嵌入 Gist 但出现以下错误 无法对 文档 执行 写入 除非显式打开 否则无法从异步加载的外部脚本写入文档 这是我的组件 var EmbeddedGist React createClass render
  • 需要从 webapp 执行 shell 脚本并在页面中显示控制台输出

    我正在寻找 java 示例或库来帮助我将其集成到 Struts2 Spring 应用程序中 许多构建系统 例如 Luntbuild 或 Hudson 都具有此功能 我想在我尝试从其中一个示例中挖掘它之前 我想我会问是否有人知道一个独立的示例
  • 即使链接器可以找到该库,为什么我也会收到“DSO 丢失”错误?

    我正在针对我编写的共享库编译一个程序 这个库又依赖于Boost program options 以及其他图书馆 当我编译程序时 我当然需要提及我的库 但我收到 DSO 错误 g ism create conf cc o ism create