【兆易创新GD32H759I-EVAL开发板】Keil 工程警告 Multiply defined Global Symbol 原因排查

 在测试【兆易创新GD32H759I-EVAL开发板】过程中  遇到许多小坎坷

今天遇到的是 

.\Objects\Project.axf: Warning: L6439W: Multiply defined Global Symbol OS_Tick_Enable defined in .text.OS_Tick_Enable(os_systick_1.o) rejected in favor of Symbol defined in .text.OS_Tick_Enable(os_systick.o).
.\Objects\Project.axf: Warning: L6439W: Multiply defined Global Symbol OS_Tick_Disable defined in .text.OS_Tick_Disable(os_systick_1.o) rejected in favor of Symbol defined in .text.OS_Tick_Disable(os_systick.o).
.\Objects\Project.axf: Warning: L6439W: Multiply defined Global Symbol OS_Tick_GetCount defined in .text.OS_Tick_GetCount(os_systick_1.o) rejected in favor of Symbol defined in .text.OS_Tick_GetCount(os_systick.o).

遇到 变量重复警告

一般是 针对重复的变量名  先搜索整个工程,然后排查 ,去重复

拿一个警告来分析

.\Objects\Project.axf: Warning: L6439W: Multiply defined Global Symbol OS_Tick_Enable defined in .text.OS_Tick_Enable(os_systick_1.o) rejected in favor of Symbol defined in .text.OS_Tick_Enable(os_systick.o).

这些警告信息指出您在项目中存在多个全局符号定义冲突。具体来说,像OS_Tick_EnableOS_Tick_Disable等多个函数或变量在不同的源文件(os_systick_1.oos_systick.o)中被定义了多次,链接器在链接过程中选择了其中一份定义,并忽略了另一份,以解决这个多重定义问题。这种情况虽然不会导致编译错误,但可能引发运行时错误,因为可能不是您期望的版本被链接器选择。

原因

  1. 相同函数或变量在不同源文件中的重复定义:这可能是因为您不小心将同一函数或变量的定义复制到了多个源文件中。
  2. 静态库或外部库中的重复定义:如果您链接了包含这些符号定义的多个静态库,也可能会出现这种警告。
  3. 源文件重复包含:在构建过程中,同一个源文件被多次编译到不同的目标文件中。

 

解决思路

  1. 检查和合并重复的定义:警告中提到了 很多变量 都在 os_systick_1.oos_systick.o 中 重复定义,一般来说是先逐个 比较涉及到的重复定义的函数或变量。如果可能,将它们合并到一个共同的源文件中,或者确保每个符号只在一个源文件中定义。 经过搜索排查这些重名变量发现 系统确实包含了2个  os_systick.c
  2. 但是 区别是 一个位于 CMSIS 6.0 的路径下,一个位于 CMSIS RTOS 的路径下,
  3. 那么 之所以警告会出现 os_systick_1.o  是因为  存在了2个os_systick.c 文件 ,编译器在编译时 自动给第二个 生成的.o文件 改成了 os_systick_1.o ,

 应该保留哪个? 如何保留 ?
由于系统使用了 FreeRTOS ,所以 RTOS路径下的 不能少, 如何去掉 另一个多余的文件?
 

发现是 在配置RTE时  选择重复导致

勾选掉 这个选项 解决问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最尴尬的论文!ChatGPT 抄来的忘记删掉提示词,211高校教授发表在一区SCI期刊

张同学,你的ChatGPT指令提示词忘记删除了?!!!! 近期,一篇题目为“The three-dimensional porous mesh structure of Cu-based metal-organic-framework - aramid cellulose separator enhances …

RISC-V架构中mret、sret、ret三个指令的区别

1、ret指令 ret用于函数调用时返回。可以把C语言函数反汇编,可以看到最后一句反汇编代码都是ret,对应于C语言的return语句执行ret函数后,会把PC设置成ra寄存器中保存的值,继续执行函数调用前的指令更多函数调用细节可参考博客&am…

面试算法-68-将有序数组转换为二叉搜索树

题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视…

通过git bash 或命令行ssh访问服务器 sftp上传下载文件

上传下载文件 sftp -P 端口 appywIP 示例:sftp -P 10022 appyw25.222.133.222 然后输入密码即可 ls 查看文件 lls 查看本地文件 cd 跳转 lcd 本地跳转 get ... 下载文件 put 本地文件名 远程文件夹 //上传文件 put -r 本地文件夹 远程文件夹 //上传文件夹服务器…

【计算机】——51单片机

单片机是一种内部包含CPU、存储器和输入/输出接口等电路的集成电路(IC芯片) 单片机是单片微型计算机(Single Chip Microcomputer)的简称,用于控制领域,所以又称为微型控制器(Microcontroller U…

C# Unity 中的 Async/Await 简单解释

我们先来了解一下同步操作: 在软件开发中,同步操作是指以顺序、阻塞方式执行的任务。这意味着一项任务在下一项任务开始之前完成,并且每个操作都会等待前一项任务完成。在同步执行中,程序的流程是线性的,任务是一个接一个地处理的。这就像排队:每个人都必须等待前面的人完…

TikTok小店运营经验分享,美国本土小店怎么做?

作为资深跨境老玩家,虽不说是经验丰富,至少也是摸清了基本的玩法思路。TikTok作为近来的跨境新蓝海,他的玩法其实并不难,作为第一批试错玩家,今天也诚心给大家分享一些美国本土小店运营经验,感兴趣的话就看…

【C++刷题】优选算法——动态规划第二辑

按摩师 状态表示:dp[i]: 表示到i位置时的&#xff0c;最长预约时长 状态转移方程:dp[i] max(dp[0], dp[1], ..., dp[i-2]) nums[i]int massage(vector<int>& nums) {// 0.边界情况处理if(nums.size() 0) return 0;else if(nums.size() 1) return nums[0];else i…

Linux系统Docker安装Drupal并配置数据库实现公网远程访问本地站点

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它的学习…

网速监控,实时网络速度监控

带宽与网速 现在&#xff0c;对高带宽的需求空前高涨&#xff0c;而且网络&#xff08;包括标准的内部部署&#xff09;以及公共、私有和混合环境都变得更加复杂。 虽然带宽和网速经常互换使用&#xff0c;但它们并不总是相同的。网速更多的是与延迟有关&#xff0c;而不是与…

某项目公司-——ETL工程师岗位——二面

1.自我介绍 2.如果给你一个数仓项目&#xff0c;你应该从那些方面向你的上级汇报。 3.对自己的未来职业生涯规划。 4.平常下班之后做那哪些事情。 5.对于写PPT,写文档这块是否可以。 6.遇到工作中的压力&#xff0c;该如何处理。 7.你曾经是做什么的。为什么想着向互联网…

Linux系统及操作 (04)

Linux系统及操作 (03) RPM 软件包 网络下载对应软件包光盘镜像文件&#xff0c;具备软件包 Windows 系统软件包的管理 可以指定安装位置安装是集中安装到一个目录Linux 系统 与 Windows 系统相反。 常见的软件包&#xff08;生态&#xff09;类型 电脑入侵99%都是通过软件…

ai制图常用的软件有哪些?这5款ai生图工具值得推荐!

过去提起制图&#xff0c;它是一项具备高度专业化的创作活动&#xff0c;需要由熟练掌握制图技能的人完成&#xff0c;且制图通常包含的步骤繁多&#xff0c;很容易劝退想学习或者入门制图的新手&#xff0c;但随着 ai 人工智能技术在各个领域的落地&#xff0c;我们有机会用上…

MYSQL索引、事务、存储引擎(一)

目录 一、索引 1、索引的概念 2、索引的作用 3、索引的副作用 4、创建索引的原则依据 二、索引的分类 1、普通索引 1.直接创建索引 2.修改方式创建索引 3.创建表的时候指定索引 2、唯一索引 1.直接创建唯一索引 2.修改表方式创建索引 3.创建表的时候指定索引 3、…

以题为例浅谈双指针算法

什么是双指针算法 双指针是指在遍历元素时&#xff0c;不是使用单个指针进行遍历而是使用两个指针进行访问&#xff0c;从而达到相应目的&#xff1b;注意这个指针不是c语言中那个指向地址的指针&#xff1b; 双指针分类 双指针分为对撞指针和快慢指针&#xff1b; 对撞指针…

JetBrains全家桶激活,分享 IntelliJ IDEA 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; IDEA 公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具被…

Vulnhub靶机:Kioptrix_2014

一、介绍 运行环境&#xff1a;Virtualbox和vmware 攻击机&#xff1a;kali&#xff08;192.168.56.101&#xff09; 靶机&#xff1a;Kioptrix: 2014&#xff08;192.168.56.108&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://ww…

mac硬盘拷贝到另外硬盘 苹果电脑怎么拷贝到移动硬盘

在当今的信息时代&#xff0c;数据的存储和传输是我们日常生活和工作中不可或缺的一部分。我们经常需要使用各种硬盘来保存和备份我们的数据&#xff0c;比如内置硬盘、移动硬盘、U盘等。但是&#xff0c;不同的硬盘可能使用不同的文件系统&#xff0c;这给我们的数据拷贝带来了…

【SpringSecurity】十七、OAuth2授权服务器 + 资源服务器Demo

文章目录 0、库表准备1、项目结构2、基于数据库的认证3、授权服务器配置4、授权服务器效果测试5、资源服务器配置6、其他授权模式测试6.1 密码模式6.2 简化模式6.3 客户端模式6.4 refresh_token模式 相关&#x1f4d5;&#xff1a;【Spring Security Oauth2 配置理论部分】 0、…

完全不懂编程的话,如何系统的学习Python?

对于完全不懂编程的人来说&#xff0c;系统地学习Python可以按照步骤来&#xff0c;虽然开始的几步&#xff0c;难以理解&#xff0c;不懂&#xff0c;不知道什么意思&#xff0c;没关系&#xff0c;不用记不用懂&#xff0c;继续往下进行&#xff0c;也许到第二步第三步&#…