当前位置: 首页 > 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.jsqmd.com/news/1104612/

相关文章:

  • GHelper终极指南:华硕笔记本性能优化与轻量控制完整教程
  • 无人机路径规划算法
  • 5分钟掌握百度网盘提取码智能获取:告别繁琐搜索的终极方案
  • 告别臃肿控制软件:G-Helper如何让你的华硕笔记本重获新生
  • 漏洞修复与预防实战:从SQL注入到文件上传的闭环安全实践
  • 托珠单抗静注不便,巴瑞替尼口服便利能否取而代之
  • STM32F446RE与MC6470 IMU的运动控制方案实现
  • WebLogic高危漏洞应急响应实战:从CVE-2019-2725反序列化攻击到主动防御
  • openEuler/bigdata:构建下一代大数据生态系统的终极指南 [特殊字符]
  • 华硕设备终极解放方案:G-Helper轻量级控制工具从痛点到解决方案完全指南
  • 【小白也能轻松玩转龙虾】虾壳云一键部署 OpenClaw v2.7.9,实现电脑办公任务自动化(附最新安装包)
  • 终极指南:如何用dnSpy调试和编辑.NET程序集(无需源代码)
  • G-Helper:华硕笔记本轻量级性能管理工具完全指南
  • 百度网盘解析工具终极指南:如何轻松获取真实下载地址
  • 手机号码归属地查询系统:3步快速定位与地图可视化方案
  • LoadRunner性能测试实战:从核心组件到高频问题排查指南
  • 暗黑3自动化宏工具终极指南:告别手动操作,解放你的双手
  • 告别百度网盘限速:3分钟掌握真实下载链接解析技巧
  • 低成本6DoF运动跟踪方案:IMU与MCU的优化实践
  • 戴尔G15散热控制终极指南:开源温度管理工具完全解析
  • IntelliJ IDEA折叠边界失效真相(官方Bug追踪编号IDEA-32891):如何绕过2023.3.2+版本大纲丢失问题
  • DownKyi视频下载神器:5个实用技巧快速掌握B站内容收藏
  • 关于哈希函数的分布特性与性能影响分析的技术7
  • Storprototrace在生产环境的部署实践:大规模存储集群监控终极指南
  • 手机号码定位系统:3分钟实现精准地理位置查询
  • Mem Reduct:终极免费内存清理工具,让你的Windows电脑运行如飞
  • 如何快速解决iSulad授权配置的10个常见问题:openEuler authz插件终极指南
  • 戴尔G15散热控制神器:开源轻量级温度管理软件TCC-G15完全指南
  • KeyStore Explorer:Java密钥库图形化管理工具的终极指南
  • 百度网盘高速下载终极指南:告别限速的完整解决方案