gcc/ld:动态链接中的 -Wl、-rpath 是什么?静态链接中的 -l 是什么?

2023-12-20

对于 /my/dir/path/foo.a 和 /my/dir/path/bar.a:

要使用 gcc/g++ 静态链接,可以使用-L指定包含静态库的目录和-l指定库的名称。在这种情况下,人们会写gcc -L/my/dir/path -lfoo -lbar ....

使用 /my/dir/path/foo.so 和 /my/dir/path/bar.so:

要使用 gcc/g++ 动态链接,可以使用-Wl,-rpath,/my/dir/path。库的名称是如何指定的?是命令gcc -L/my/dir/path -Wl,-rpath,/my/dir/path -lfoo -lbar ...正确的?或者应该是gcc -L/my/dir/path -Wl,-rpath,/my/dir/path -Wl,-lfoo -Wl,-lbar ...?换句话说,库名称是否需要通过以下方式传递给链接器:-Wl,-l?


The -l参数适用于静态库和共享库,但期望指定库的文件名采用特定格式。即,-lfoo告诉链接器寻找名为的文件libfoo.a or libfoo.so。如果您想链接到文件名没有此“lib”前缀的库(即foo.so),您可以使用分号并指定文件名:-l:foo.so.

因此,要动态链接/my/dir/path/foo.so and /my/dir/path/bar.so您需要发出以下命令:

g++ -L/my/dir/path/ -l:foo.so -l:bar.so

As for -rpath,它有-rpath=<path>格式,因此为了将其传递给链接,您需要执行以下操作:

g++ -L/my/dir/path/ -Wl,-rpath=/my/dir/path/ -l:foo.so -l:bar.so
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gcc/ld:动态链接中的 -Wl、-rpath 是什么?静态链接中的 -l 是什么? 的相关文章

  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Material-ui:如何停止嵌套组件中单击事件的传播

    我有一个IconMenu里面的组件Paper成分 我想阻止内部组件 IconMenu 这就是我想出来的 没有显着的结果 我也尝试用 onClick 代替onTouchTap onMouseUp具有相同的效果 iconMenuClick方法从
  • Java:递增/递减运算符的前缀/后缀

    从下面的程序或here http download oracle com javase tutorial java nutsandbolts examples PrePostDemo java 为什么最后一个调用System out pri
  • 如何移动 JPanel

    我有一个JDialog其中包含JPanel和其他元素 例如JTextField 我想搬家JDialog加载到屏幕上后从一个位置到另一个位置 当我尝试使用时jdialog setLocation 我无法动弹JDialog并且添加到其中的所有其
  • 多个使用者和查询 C# BlockingCollection

    我使用 NET 4 0 BlockingCollection 来处理一个项目队列 每个项目都需要通过一个操作来处 理 该操作最多需要一秒钟来处理每个项目 该项目队列可以由不同的线程添加到该队列中 我对此有几个问题 a 允许多个消费者处理此
  • 如何确定某个日期是否位于当前星期的日期之间?

    In C 我们如何检查特定日期与周内日期 例如 2014 年 6 月 2 日 当前几周 2014年2月2日 2014年2月8日 所以这个日期是在上周 使用它进行检查 如果您希望从 fromDate 开始始终是 1 周 则最后一个参数是可选的
  • 消除 BigQuery 表中的重复记录

    我计划每天将增量数据附加到 BigQuery 表中 每次我向现有表添加增量数据时 我都想从表中的现有数据中消除重复记录 基于主键列 一种方法是 从增量数据中收集密钥集 我们称其为INCR KEYS 对以下行运行查询 SELECT all c
  • 将 mkv 转换为 h264 FFmpeg

    EDIT 这个问题已经变得非常流行 并且是搜索 convert mkv to h264 ffmpeg 的最佳结果之一 因此我认为对于任何偶然发现这个问题的人来说 添加这一点是适当的 而不是使用 ffmpeg i input mkv c v
  • C# Outlook 2007 - 如何直接从我的插件访问附件内容?

    我正在尝试解析基于文本的文件附件 txt doc 等 但是 我似乎无法获取二进制信息本身 我可以获取文件名 也可以将文件保存到某个临时文件夹并从那里打开它 但这看起来很混乱 有没有什么方法可以访问附件的内容而不保存它 阅读它 然后删除它 或
  • 使用 Visual Studio 管理源代码管理中的引用

    我在 Visual Studio 项目中管理 dll 引用时遇到问题 所有注册的 NET 和 COM 引用都工作正常 但当涉及磁盘上的 dll 文件时 如果我引用磁盘上的文件 我的同事将丢失引用 因为他们可能将其放在磁盘上的不同位置等 Vi
  • 如何使用layoutIfNeeded?

    何时以及如何layoutIfNeeded用过的 我知道当我们改变视图的布局时 我们可以调用setNeedsLayout更新布局但不确定何时layoutIfNeeded应该使用 注意 我有layoutIfNeeded在实际代码中使用但忘记了它
  • 无法在iOS中将统一的CNContact添加到CNGroup中

    这就是我正在做的 void doCreateGroup self contentView endEditing true NSString newString self contentView groupNameField text str
  • 检索 SQLite 中所有项目的最快方法是什么?

    我在 Windows 上编程 我将信息存储在 sqlite 中 然而我发现获取所有物品有点慢 我正在使用以下方式 select from XXX 检索 1 7MB SQLite DB 中的所有项目大约需要 200 400 毫秒 太慢了 有人
  • 在 NodeJS 中可靠地读取 FIFO

    我正在编写一个与第三方应用程序交互的 NodeJS 脚本 第三方应用程序将在文件打开期间将数据写入文件 我希望我的 NodeJS 应用程序能够实时接收这些数据 我的脚本创建一个 fifo child process spawnSync mk
  • 在 C++ 中从 WMI(Win32_LogicalDisk 类)调用 Chkdsk ->“参数无效”

    我正在尝试从 C 中的 WMI 运行 Chkdsk 我正在使用 Qt Framework ExecMethod 返回 参数无效 我已经根据设置参数http msdn microsoft com en us library cc250766
  • 如何获取隐藏父元素的大小?

    1 4 4 返回隐藏元素的大小 但是另一个隐藏元素中的元素呢 除了 getWidth 还有更好的解决方案吗
  • SqlAlchemy:如何实现 DROP TABLE ... CASCADE?

    我需要删除 PostgreSQL 数据库中具有外键约束并且需要的表DROP TABLE CASCADE 我可以执行原始 SQL engine execute DROP TABLE s CASCADE table name 但是 我想实现这种
  • 尝试在 r 中运行 glmer 时出现警告消息

    目前 我正在尝试在最新版本的 R 和 lme4 上重新运行旧的数据分析 二项式 glmer 模型 从 2013 年初开始 因为我不再有旧版本的 R 和 lme4 但是 我遇到了与 dmartin 和 carine 之前的线程 第一条警告消息
  • Bundle.main.path(forResource... 查找 xml 文件时总是返回 nil

    我正在尝试从我的包中读取文件 我知道以前有人问过这个问题 但我已经阅读了其他解决方案 但其中似乎不符合我的情况 我有一个 XML 文件 我可以在项目导航器中看到它 我还可以通过转到项目 构建阶段 复制捆绑资源来检查它是否包含在捆绑包中 我尝
  • 从 Azure ACS 下载登录页面后,如何使返回 URL 再次正常工作?

    Azure 培训工具包包括一个名为 IntroToACS2 的实验室 在其中创建一个 WebRole 并启用 ACS 以便您可以使用 Google Live 或 Yahoo ID 登录 本实验的第二部分将引导您完成从 ACS 下载示例登录页
  • gcc/ld:动态链接中的 -Wl、-rpath 是什么?静态链接中的 -l 是什么?

    对于 my dir path foo a 和 my dir path bar a 要使用 gcc g 静态链接 可以使用 L指定包含静态库的目录和 l指定库的名称 在这种情况下 人们会写gcc L my dir path lfoo lbar