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

Ubuntu24.04编译linux-xlnx-xlnx_rebase_v5.4的问题

环境

环境Ubuntu 18.04 (官方推荐)Ubuntu 24.04(我的wsl)
GCC7.x13.3
binutils2.302.42
glibc2.272.39
Linux-xlnx2020.22020.2

现象

minglie@ming:/home/wpf/workspace/kernel-driver/linux-xlnx-xlnx_rebase_v5.4_2020.2$makeHOSTLD scripts/dtc/dtc /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x20): multiple definition of yylloc';scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here collect2: error: ld returned1exitstatus make[1]: ***[scripts/Makefile.host:116: scripts/dtc/dtc]Error1make: ***[Makefile:1263: scripts_dtc]Error2

旧版 Linux 内核(5.4 Xilinx 2020.2)和新版 Ubuntu/WSL 的 flex/bison 不兼容
yylloc 全局变量被定义了两次
dtc-parser.tab.o 定义了一次 yylloc
dtc-lexer.lex.o 又定义了一次 yylloc

GCC 10 有个编译选项-fcommon 和 -fno-common

对比项-fcommon(GCC 10 以前默认)-fno-common(GCC 10 以后默认)
默认版本GCC < 10GCC ≥ 10
对未初始化全局变量int x;的处理生成 Common Symbol生成真正的全局变量定义
多个源文件都有int x;链接器自动合并链接时报错
nm查看符号C(Common)B(BSS)或D(Data)
是否容易隐藏 Bug
是否符合现代 C 工程规范较宽松更严格、更推荐
Linux 新版本支持情况已逐渐淘汰官方推荐

gcc编译选项

minglie@ming$ gcc-Q--help=common|grepcommon-fcommon[disabled]-fpredictive-commoning[disabled]-funconstrained-commons[disabled]

修改scripts/dtc/dtc-lexer.l重新编译

# scripts/dtc/dtc-lexer.l 的 26行# YYLTYPE yylloc; 改为 extern YYLTYPE yylloc;$vimscripts/dtc/dtc-lexer.l# 重新编译makemrpropermakexilinx_zynq_defconfigmake-j$(nproc)# 或者# 删除 dtc 的生成文件rm-fscripts/dtc/dtcrm-fscripts/dtc/*.orm-fscripts/dtc/*.tab.*rm-fscripts/dtc/*.lex.c# 重新编译make-j$(nproc)
http://www.gsyq.cn/news/1616582.html

相关文章:

  • WebLogic高危漏洞应急响应实战:从CVE-2019-2725反序列化攻击到主动防御
  • openEuler/bigdata:构建下一代大数据生态系统的终极指南 [特殊字符]
  • 百度网盘解析工具终极指南:如何轻松获取真实下载地址
  • 暗黑3自动化宏工具终极指南:告别手动操作,解放你的双手
  • 低成本6DoF运动跟踪方案:IMU与MCU的优化实践
  • DownKyi视频下载神器:5个实用技巧快速掌握B站内容收藏
  • 如何快速解决iSulad授权配置的10个常见问题:openEuler authz插件终极指南
  • iTrustee Client多线程安全:10个并发访问TEE资源的线程安全机制解析
  • KeyStore Explorer:Java密钥库图形化管理工具的终极指南
  • Dell G15开源温度控制中心:专业散热管理方案完全指南
  • 百度网盘高速下载终极指南:告别限速的完整解决方案
  • 如何在3分钟内为Blender安装完整的3MF格式插件:终极3D打印工作流指南
  • Midscene.js架构深度剖析:纯视觉驱动的跨平台AI自动化实战指南
  • 系统安全与性能检查:env_check在openEuler升级后的应用实践
  • 推荐学习 C++11 的材料
  • OpenDesign Components 组件开发指南:从文档规范到代码实现
  • utcpio架构解析:Rust如何重写经典Unix工具
  • GEO优化效果检测指南:5个核心指标让你告别盲目投放
  • 2026苹果手机去水印App推荐:免费好用的iPhone去除视频图片水印软件AppStore实测
  • 百度网盘直链解析工具:5步实现高速下载的完整方案
  • QEMU高级功能:热迁移、快照、内存气球技术解析
  • 如何快速上手X-diagnosis:5分钟完成安装配置的完整教程
  • STM32F746ZG与LV30条码扫描器的硬件协同与优化
  • 为什么选择Ketones?新一代eBPF工具集的5大优势对比
  • 终身学习的本质是提取通用模型。当你掌握了“学习如何学习”的元能力,任何新领域的潜能都能被快速激活。
  • LangGraph实战训练营-构建自然语言转SQL智能代理
  • VMAnalyzer安装与配置完整教程:从零开始搭建监控系统
  • sra_benchmark社区贡献指南:如何参与项目开发与改进搜推模型基准测试标准
  • 从0开始学习utpam:新手必看的认证框架入门指南 [特殊字符]
  • Storprototrace性能优化:降低eBPF探针对系统性能影响的10个技巧