【2017-12-07】【转】动态库的链接和链接选项-L,-rpath-link,-rpath
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2017-12-07 标题【转】动态库的链接和链接选项-L-rpath-link-rpath分类编程 / C C 标签CC·rpath【转】动态库的链接和链接选项-L-rpath-link-rpath链接动态库链接选项和路径本文转自【 https://my.oschina.net/shelllife/blog/115958 】有删改。链接动态库如何程序在连接时使用了共享库就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时Linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用用户可以通过设定它来查找除默认路径之外的其他路径如查找/work/lib路径,你可以在/etc/rc.d/rc.local或其他系统启动后即可执行到的脚本添加如下语句LD_LIBRARY_PATH /work/lib:$(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路径优先于系统默认路径之前查找。不过LD_LIBRARY_PATH的设定作用是全局的过多的使用可能会影响到其他应用程序的运行所以多用在调试。LD_LIBRARY_PATH的缺陷和使用准则可以参考《Why LD_LIBRARY_PATH is bad》 。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径并且该库的路径信息保存在可执行文件中运行时它会直接到该路径查找库避免了使用LD_LIBRARY_PATH环境变量查找。链接选项和路径现代连接器在处理动态库时将链接时路径Link-time path和运行时路径Run-time path分开,用户可以通过-L指定连接时库的路径通过-R或-rpath指定程序运行时库的路径大大提高了库应用的灵活性。链接器ld的选项有 -L-rpath 和 -rpath-link看了下 man ld大致是这个意思-L: “链接”的时候去找的目录也就是所有的 -l 选项里的库都会先从 -L 指定的目录去找然后是默认的地方。编译时的-L选项并不影响环境变量LD_LIBRARY_PATH-L只是指定了程序编译连接时库的路径并不影响程序执行时库的路径系统还是会到默认路径下查找该程序所需要的库如果找不到还是会报错类似cannot open shared object file。-rpath-link这个也是用于“链接”的时候的例如你显示指定的需要 FOO.so但是 FOO.so 本身是需要 BAR.so 的后者你并没有指定而是 FOO.so 引用到它这个时候会先从 -rpath-link 给的路径里找。-rpath: “运行”的时候去找的目录。运行的时候要找 .so 文件会从这个选项里指定的地方去找。对于交叉编译交叉编译链接器需已经配置 --with-sysroot 选项才能起作用。也就是说-rpath指定的路径会被记录在生成的可执行程序中用于运行时查找需要加载的动态库。

相关新闻

Mac M4芯片运行Windows 11的VMware Fusion实战指南

Mac M4芯片运行Windows 11的VMware Fusion实战指南

1. 为什么要在Mac M4上运行Windows 11?作为首批搭载M4芯片的Mac用户,我完全理解那种既想享受苹果生态的流畅体验,又不得不面对某些Windows专属软件的矛盾感。不同于Intel芯片时代的Boot Camp方案,ARM架构的M系列芯片需要通过虚拟化…

2026/7/17 6:25:31阅读更多 →
具身智能的定义、特征与原理解析(18)

具身智能的定义、特征与原理解析(18)

前沿技术介绍:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,属于“物理AI” 领域的一种全新技术形态,完成了从“虚拟世界”到“…

2026/7/17 6:20:31阅读更多 →
具身智能的定义、特征与原理解析(16)

具身智能的定义、特征与原理解析(16)

前沿技术介绍:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,属于“物理AI” 领域的一种全新技术形态,完成了从“虚拟世界”到“…

2026/7/17 6:20:31阅读更多 →
Unity Addressable资源管理框架:从核心概念到工程实践

Unity Addressable资源管理框架:从核心概念到工程实践

1. 项目概述:为什么我们需要Addressable系统?如果你在Unity项目里做过资源管理,大概率经历过这样的场景:项目初期,所有资源都放在Resources文件夹里,加载用Resources.Load,感觉挺方便。但随着项…

2026/7/17 7:35:36阅读更多 →
惠普游戏本系统安装与优化全指南

惠普游戏本系统安装与优化全指南

1. 惠普暗影精灵与光影精灵系列电脑系统安装前的准备工作在开始安装系统前,我们需要做好充分的准备工作。首先需要明确的是,惠普暗影精灵(OMEN)和光影精灵(VICTUS)系列虽然都是游戏本,但在硬件配…

2026/7/17 7:35:36阅读更多 →
Windows SYSTEM账户权限管理与安全实践

Windows SYSTEM账户权限管理与安全实践

1. SYSTEM账户的本质与权限层级Windows系统中的SYSTEM账户(NT AUTHORITY\SYSTEM)是操作系统内核使用的最高权限账户,其权限级别甚至超过Administrator。这个账户默认不显示在用户管理界面中,也不提供交互式登录功能,主…

2026/7/17 7:35:36阅读更多 →
基于OpenHarmony的多模态智能门锁系统设计与实现

基于OpenHarmony的多模态智能门锁系统设计与实现

1. 项目背景与核心需求智能门锁作为传统机械锁的升级方案,近年来在安全性、便捷性和智能化方面持续演进。当前主流智能门锁普遍采用指纹、密码或NFC等单一认证方式,存在生物特征识别率不稳定、备用开锁方案体验割裂等问题。本项目基于小凌派RK2206开发板…

2026/7/17 7:35:36阅读更多 →
Windows与Linux双系统引导管理实战指南

Windows与Linux双系统引导管理实战指南

1. 双系统引导管理概述在Windows环境下管理双系统启动项是许多开发者和技术爱好者的刚需。当我们在同一台机器上安装Windows和Linux双系统时,通常会遇到启动菜单缺失Linux选项的情况。这并非系统安装失败,而是Windows的引导管理器(Boot Manag…

2026/7/17 7:35:36阅读更多 →
DownKyi项目法律合规性分析:开源视频下载工具的法律边界与用户指南

DownKyi项目法律合规性分析:开源视频下载工具的法律边界与用户指南

DownKyi项目法律合规性分析:开源视频下载工具的法律边界与用户指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去…

2026/7/17 7:30:36阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →