尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

动态库的调用方式

动态库的调用方式
📅 发布时间:2026/6/20 9:01:12

在 Linux 中,动态库(.so文件)的调用方式主要有两种:编译时链接(隐式调用)和运行时加载(显式调用)。

一、编译时链接(隐式调用)

这种方式在编译阶段就指定动态库,程序启动时会自动加载依赖的动态库,适用于已知库路径和接口的场景。

  • 步骤 1:创建动态库源文件
    首先实现一个简单的动态库,包含两个接口函数。

  • 步骤 2:编译生成动态库
    使用g++编译生成.so文件:
# 编译为位置无关代码(-fPIC),生成动态库(-shared)
g++ -fPIC -shared mylib.cpp -o libmylib.so

生成libmylib.so动态库(Linux 动态库命名规范:lib+库名+.so)。

  • 步骤 3:编写调用动态库的程序

  • 步骤 4:编译程序并链接动态库
# -L. 表示在当前目录查找动态库,-lmylib 表示链接libmylib.so
g++ main.cpp -o main -L. -lmylib

+ 步骤 5:运行程序 运行前需确保系统能找到动态库(否则会报 “找不到共享库” 错误):
# 临时指定动态库搜索路径(当前目录)
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH#运行程序
./main

二、运行时加载(显式调用)

这种方式不依赖编译时链接,而是在程序运行中通过系统函数动态加载库并调用接口,适用于库路径不确定或需要动态切换库版本的场景(如插件系统)。

  • 步骤 1:使用相同的动态库
    复用前面生成的libmylib.so(无需修改)。

  • 步骤 2:编写显式调用的程序
    通过dlopen、dlsym、dlclose等函数手动加载和调用动态库。

  • 步骤 3:编译程序
    显式调用需要链接dl库(动态加载系统库)
g++ main_dl.cpp -o main_dl -ldl
  • 步骤 4:运行程序
    同样需要指定动态库路径
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./main_dl

输出结果与隐式调用相同。

三、两种调用方式对比

img

相关新闻

  • OAM角色定义
  • 消灭重复代码的最佳实践
  • SpringBean实例化之前做点事情

最新新闻

  • 2026年淮北市贵金属旧料回收优质靠谱实体门店精选五家 黄金回收铂金回收白银回收彩金回收真实探店测评清单及联系方式推荐 - 前途无量YY
  • 2026年日照市老百姓优先选择的五家贵金属回收门店 黄金回收白银回收铂金回收彩金回收合规靠谱门店测评合集+联系方式 - 亦辰小黄鸭
  • 2026年金华市贵金属旧料回收优质靠谱实体门店精选五家 黄金回收铂金回收白银回收彩金回收真实探店测评清单及联系方式推荐 - 前途无量YY
  • 三维SLAM实战指南:基于Velodyne VLP-16与A-LOAM的室内外建图全流程解析
  • 自动驾驶多任务感知的部分监督学习实战
  • 2026年晋城市贵金属旧料回收优质靠谱实体门店精选五家 黄金回收铂金回收白银回收彩金回收真实探店测评清单及联系方式推荐 - 前途无量YY

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号