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

CMake基础: 全局变量CMAKE_POSITION_INDEPENDENT_CODE

目录

1.简介

2.CMake 配置方式

3.注意事项

4.与 BUILD_SHARED_LIBS 的关系


1.简介

这是 CMake全局变量,用来统一控制是否默认生成位置无关代码(-fPIC)。这是构建共享库 (Shared Libraries, .so/.dll)的必要条件。

核心作用:

  • 生成位置无关代码:代码中不使用绝对地址,而是通过相对寻址或全局偏移表 (GOT) 来访问数据和函数。
  • 支持动态加载:只有启用 PIC 的代码才能被动态链接器加载到内存的任意位置,这是实现共享库和可执行文件灵活加载的基础。

2.CMake 配置方式

1.全局配置 (推荐)

为项目中所有目标设置 PIC 属性:

set(CMAKE_POSITION_INDEPENDENT_CODE ON)

2.单个目标配置

为特定库 / 可执行文件单独设置:

add_library(my_shared_lib SHARED src/library.cpp) # 显式为该目标开启 PIC set_target_properties(my_shared_lib PROPERTIES POSITION_INDEPENDENT_CODE ON )

3.条件编译

根据平台或构建类型条件开启:

if (UNIX AND BUILD_SHARED_LIBS) set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif()

3.注意事项

  • 共享库默认开启:当使用add_library(... SHARED)时,CMake 会自动为你设置POSITION_INDEPENDENT_CODEON,通常无需手动干预。
  • 静态库与 PIC:虽然静态库 (.a/.lib) 通常不需要 PIC,但如果它未来会被链接到共享库中,建议也为其开启 PIC,以避免潜在的链接错误。
  • 平台差异
    • Linux/macOS:构建共享库强烈要求 PIC,否则会报错。
    • Windows:DLL 本身不依赖-fPIC编译选项(其机制不同),但 CMake 仍支持该属性以保持跨平台兼容性。

4.与BUILD_SHARED_LIBS的关系

当你设置set(BUILD_SHARED_LIBS ON)时,所有通过add_library创建的库默认都会构建为共享库,并自动启用 PIC 特性。

http://www.jsqmd.com/news/437701/

相关文章:

  • XSS攻击详解:类型、目标与防护策略(xss攻击类型、xss攻击方式和原理)
  • 2026年的电梯门禁读卡器(梯控读头)已演进为高度标准化、模块化且功能强大的智能身份识别前端。其核心价值在于通过嵌入式设计和全协议兼容,成为连接物理通行与数字权限的“万能接口”,赋能各类智能终端。
  • 在B站学AI绘图笔记
  • 元控制框架下的推理资源智能调度
  • AI初创公司为何以两种价格出售相同股权
  • MiniMax首份财报,震惊华尔街!收入飙涨破5亿,递交港股惊人成绩单
  • 128 Gbps PCIe 7.0通道中布线区域和过孔残桩的信号完整性考量
  • Microsoft Silica 玻璃激光存储技术:实验方案、光路搭建与核心技术指标分析
  • 三分钟内快速完成MySQL到达梦数据库的迁移
  • 电科金仓数据库(KingbaseES)存储管理深度解析
  • B端提速、毛利激增,MiniMax跑到新拐点
  • AAAI 2026 Oral|论文解读:针对LLM外部推理的因果奖励调整方法
  • YOLOv3实战|从0到1训练专属猫狗目标检测模型
  • 跨平台自动化安全应急响应数据采集与分析工具
  • 2026年Q1套宝机制造厂综合评测:毕升精工为何蝉联榜首? - 2026年企业推荐榜
  • 专题二:Spring源码编译
  • 【开题答辩全过程】以 呼吸科智慧诊断管理系统的设计与实现为例,包含答辩的问题和答案
  • 数字赋能“智造”新标杆:ToDesk企业版助力百合股份高效协同,领跑营养健康产业
  • 基于YOLO26深度学习的停车场车位智能检测识别系统【python源码+Pyqt5界面+数据集+训练代码】
  • 全球远控软件终极测评:跨境电商、IT 服务行业的优选指南
  • 500 万 GLM 4.7 token免费送,智谱 GLM Coding 搭配 OpenCode 完美搭档
  • 深度探究.NET中委托(Delegate):灵活实现回调与事件驱动编程
  • 探索2026年:五家值得信赖的千问关键词优化服务商 - 2026年企业推荐榜
  • 三维重建的技术路线,越来越收敛了......
  • Google Cloud发布2026年AI Agent趋势报告:五大转变重塑企业运行逻辑
  • 2025年IEEE IOTJ SCI2区TOP,用于三维低空城市环境中无人机路径规划的多策略改进粒子群优化算法,深度解析+性能实测
  • 新能源汽车驱动电机测试台架系统构成与技术演进分析
  • 脉冲/频率计数采集模块:多通道采集,支持断电保存
  • AI元人文:空实辩证(正本)
  • 高速脉冲频率采集输入模块:100KHZ高速采集,正交信号无延迟解析