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

undefined reference的问题(同时链接静态,动态库可能导致的问题)

项目中,往往会同时链接 .a 文件和 .so 文件,当项目比较庞大的时候,就会出现很难保证 .a文件的链接顺序的情况,由于.a文件对链接顺序有较高的要求,所以可能会出现即使指定了相应的 .a文件,那么链接器有的时候也无法正确链接,即会出现:undefined reference
解决的方法有几种:

全部链接静态库,并严格保证依赖顺序

全部链接动态库

保证混合链接的情况,调整编译指令

静态库链接顺序必须严格保证「先用到符号的,后提供符号的」,但在多个 .a 时,有时链接器只扫一遍,不会再次回头扫描,当依赖的文件过多时,很难手动保证顺序,所以推荐使用下面的方法:

target_link_libraries(project_name"-Wl,--start-group"zstd::libzstd_static# other .a or .solibrdkafkaSasl2::Sasl2"-Wl,--end-group"
)

这样就可以强制linker在 --start-group--end-group之间进行多次扫描,从而规避这个问题。

http://www.dtcms.com/a/164925.html

相关文章:

  • 大连理工大学选修课——机器学习笔记(9):线性判别式与逻辑回归
  • Android学习总结之点击登录按钮流程
  • css 数字从0开始增加的动画效果
  • 安卓基础(Looper和Handler)
  • 逻辑回归在信用卡欺诈检测中的实战应用
  • Missashe考研日记-day31
  • 【上海大学数据库原理实验报告】MySQL基础操作
  • OpenCV 4.7企业级开发实战:从图像处理到目标检测的全方位指南
  • Web开发-JavaEE应用SpringBoot栈模版注入ThymeleafFreemarkerVelocity
  • Spring AI应用系列——基于OpenTelemetry实现大模型调用的可观测性实践
  • 益鑫通汽车连接器可替代Molex,JST
  • Axure疑难杂症:全局变量跨页面赋值、中继器交互(玩转全局变量)
  • 【Axure教程】增删改饼图
  • python实战项目67:空气质量在线检测平台js逆向
  • Neo4j多关系或多路径
  • 高并发内存池(五):性能测试与性能优化
  • 5.运输层
  • 使用skywalking进行go的接口监控和报警
  • Galini AI 技术实现方案及 GitHub 开源库推荐
  • EchoMimic 阿里开源数字人项目的复现过程
  • Vue 项目中运行 `npm run dev` 时发生的过程
  • 【优选算法 | 前缀和】前缀和算法:高效解决区间求和问题的关键
  • VR汽车线束:汽车制造的新变革
  • 改进系列(10):基于SwinTransformer+CBAM+多尺度特征融合+FocalLoss改进:自动驾驶地面路况识别
  • 【Bootstrap V4系列】学习入门教程之 加载必要文件和入门模板
  • IDEA git配置[通俗易懂]
  • 网络原理 - 12(HTTP/HTTPS - 3 - 响应)
  • Spring Boot 中 `@EnableConfigurationProperties` 注解
  • 【c++】【STL】list详解
  • python-docx清空段落样式的方法有哪些