游乐游手机版
首页/系统平台/文章详情

CentOS联合编译动态链接库详解

时间:2026-06-24 22:07
在 Windows 操作系统里,我们通常称其为动态链接库,扩展名为 dll;而在 UNIX 或 Linux 环境下,它则被称为共享库,后缀为 so。虽然名称各异,但核心功能完全一致——让多个程序共享同一份代码,从而节省内存并简化更新维护。 那么,如何将自己编写的 C 语言源码编译成一个共享库呢?

在 Windows 操作系统里,我们通常称其为动态链接库,扩展名为 .dll;而在 UNIX 或 Linux 环境下,它则被称为共享库,后缀为 .so。虽然名称各异,但核心功能完全一致——让多个程序共享同一份代码,从而节省内存并简化更新维护。

那么,如何将自己编写的 C 语言源码编译成一个共享库呢?只需一条简单的命令:

gcc -o libme.so wso.c -shared

这条命令将 wso.c 编译生成名为 libme.so 的动态链接库,其中库名部分为 me(请留意命名惯例:前缀加 lib,后缀加 .so,这是行业约定)。

联合编译步骤

共享库制作完成后,需要将其与主程序一同编译。例如:

gcc -L /root/myc/ -l me ws.c -o newws

参数解释:-L 用于指定动态链接库所在的文件夹路径;-l 用于指定库名(去除开头的 lib 以及结尾的 .so,剩下的即为库名)。

编译通常能够顺利完成,但先别急着庆祝——运行时极大概率会出问题。你会发现 newws 程序报告错误,提示找不到共享库。

失败根源:操作系统无法定位库文件

实际上,Linux 和 Windows 类似,也存在一个“系统库目录”,相当于 C:\Windows\System32。所有公共动态库都必须放置在这些目录下,系统才能自动查找并加载。以 CentOS 为例,主要有三个存放公共库的标准位置:

  • /lib —— 内核级别
  • /usr/lib —— 用户系统级别
  • /usr/lib64/ —— 64位系统专用

当然,你也可以随意将库文件放在其他路径,但系统默认不会去搜索那些位置。

解决方案

解决这一问题的最直接方法,就是将 .so 文件复制到公共库目录下,比如 /usr/lib/usr/lib64。复制完成后,还需要执行一条命令:

ldconfig

该命令的作用是刷新动态库缓存——系统会登记新加入的库,使其在后续运行时能够被准确找到。之后再次运行 newws,一切便会正常。

简要总结:编译阶段使用 -L-l 分别指定路径和库名;运行阶段确保库文件位于系统默认搜索路径中,或通过 ldconfig 注册到缓存。这些是 Linux 动态链接库最基础的操作方法,掌握之后,更复杂的项目开发便能水到渠成。

来源:https://www.jb51.net/os/RedHat/533183.html
上一篇CentOS使用source命令提示not a valid identifier怎么办? 下一篇Linux系统中软件包管理器yum和apt-get的全面对比与详解
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送