当前位置: 首页 > news >正文

共享库的创建gcc选项“-shared -fPIC -WI”

共享库的创建非常简单,最关键的是gcc的几个参数:

“-shared”:

表示输出结果是共享库类型。编译选项告诉编译器生成一个共享库(也称为动态链接库或 DLL)。共享库是一种包含可重用代码和数据的二进制文件,可以被多个程序共享,并在运行时动态加载到内存中。这意味着多个程序可以在运行时共享相同的库,减少了代码的冗余性,并提高了系统资源的利用率。

“-fPIC”:

(Position Independent Code)告诉编译器生成位置无关代码。位置无关代码是一种可以在内存中的任何位置加载和执行的代码,不依赖于特定的内存地址。这对于共享库特别重要,因为共享库可以加载到内存的任何位置,并且多个程序可以共享同一个共享库的单个实例。使用 -fPIC 生成的代码可以在不同的内存地址上运行,而不会产生冲突或错误。

“-WI”:

编译选项 -Wl,–out-implib 是用于告诉链接器生成一个导入库(Import Library)的选项。

导入库通常用于在链接时提供符号(symbols),以便其他程序可以在链接时引用它们。在Windows平台上,导入库的文件扩展名通常是 .lib。当你链接一个共享库(DLL)时,导入库中包含了导出函数的符号列表,使得链接器能够在编译时解析这些符号。这样,其他程序在链接时就可以使用这些符号了。

–out-implib 选项告诉链接器在生成可执行文件的同时,生成一个导入库文件。这对于开发 DLL 库并希望其他程序能够链接到它的应用程序是非常有用的。

http://www.lryc.cn/news/319259.html

相关文章:

  • 微服务:Bot代码执行
  • Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 3、线条平滑曲面但有条纹
  • Vue.js+SpringBoot开发数字化社区网格管理系统
  • java SSM农产品订购网站系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • vsto快速在excel中查找某个字符串
  • Unity类银河恶魔城学习记录10-1 10-2 P89,90 Character stats - Stat script源代码
  • 西门子TIA中配置Anybus PROFINET IO Slave 模块
  • 在 Rust 中使用 Serde 处理json
  • 【数据库】数据库介绍
  • python 第三方库(PyPinyin\shortuuid\json)
  • 一文解读ISO26262安全标准:术语(二)
  • 【Datawhale学习笔记】从大模型到AgentScope
  • QWebEngineView添加自定义网址协议UrlScheme
  • react中使用腾讯地图
  • deepin23beta中SQLite3数据库安装与使用
  • 前后端分离项目环境搭建
  • HTML静态网页成品作业(HTML+CSS)——家乡漳州介绍设计制作(1个页面)
  • 世界第二对海信到底有多重要?
  • 多站合一的音乐搜索下载助手PHP源码l亲测
  • webserver烂大街?还有必要做么?
  • 3.Redis命令
  • xray问题排查,curl: (35) Encountered end of file(已解决)
  • 【数据库】Oracle内存结构与参数调优
  • PS学习-抠图-蒙版-冰块酒杯等透明物体
  • 绝赞春招拯救计划 -- 操作系统,组成原理,计网
  • c语言:于龙加
  • AcWing 790:数的三次方根 ← 浮点数二分
  • 【LLM】LLama2模型(RMSNorm、SwiGLU、RoPE位置编码)
  • 【力扣白嫖日记】1934.确认率
  • TinTin Web3 动态精选:以太坊坎昆升级利好 Layer2,比特币减半进入倒计时