当前位置: 首页 > 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之间进行多次扫描,从而规避这个问题。

相关文章:

  • 大连理工大学选修课——机器学习笔记(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 阿里开源数字人项目的复现过程
  • 美国第一季度经济环比萎缩0.3%
  • 全文丨中华人民共和国民营经济促进法
  • 龚惠民已任江西省司法厅党组书记
  • 铺就长三角南北“交通动脉”,乍嘉苏改高速扩建项目首桩入位
  • 屠呦呦当选美国科学院外籍院士
  • 广东省副省长刘红兵跨省调任湖南省委常委、宣传部长