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

clang(clangd)与arm-linux-gcc、ARMGCC、ICCARM(IAR)、C51编译器的兼容性

环境:vscode+clangd+EIDE开发开发单片机(C51 keilMDK IAR)。

        vscode+远程+clangd+arm-linux-gcc(交叉编译工具链)。

(1)首先clang(clangd)是兼容gcc的,也就是兼容arm-linux-gcc(交叉编译工具链),所以使用第三方软件bear追踪make编译uboot或者内核源码生成的compile_commands.json文件是完全可以被clangd识别的。

(2)clangd与kei C51的兼容性。经过我的测试使用vscode+EIDE+clangd导入C51工程后,生成的compile_commands.json文件虽然也能够被clangd识别,但是存在好多错误例如找不到str、sbit这些关键字的定义,无法找到某些函数。我咨询过EIDE论坛。他们的说法是clang并不兼容C51、ARMGCC(keil MDK的编译器)、IAR编译器(iccarm.exe),但是clang是兼容gcc的,因此建议我还是使用vscode的c/c++插件来追踪keil c51的相关全局变量或者函数等

我发现使用clangd插件追踪vscode+keil C51工程在涉及到reg51.h头文件中定义的内容或者keil C51软件再带的配置例如“code”关键字,clangd无法追踪,另外需要自己在.clangd文件中添加头文件路径。其他的情况还好。

vscode的使用EIDE+c/c++插件对keil c51的函数追踪效果也不好,有时候也找不到对应头文件中函数声明对应的函数定义。(可能是c/c++插件的一个bug,我发现只要打开函数定义所在的源文件,c/c++插件会形成一个缓存文件在“C:\Users\Administrator\AppData\Local\Microsoft\vscode-cpptools”中,这样右键定义的时候就可以找到函数定义了,而不是跳转到函数声明。我找了好久也没有好的办法,不过可以通过安装c/c++ GNU global或者c++ intellisense插件,环境变量PATH添加GNU Global的路径就可以了。详情请参考:https://zhuanlan.zhihu.com/p/680392005)。不过也需要使用c/c++插件。

vscode使用EIDE+Clangd插件导入keil C51工程无法找到<REG51.H>头文件的问题 - Embedded IDE Forum

(3)vscode+EIDE+IAR+clangd。这个环境我最近也在测试,发现虽然clang不兼容IAR的编译器,但是使用clangd追踪过程中未发现明显错误。因此我现在暂时还未使用c/c++插件。

(4)vscode+EIDE+Keil MDK+clangd。这个环境我最近也在测试,也是暂时未发现严重与clang的兼容型问题。因此我现在暂时还未使用c/c++插件。


文章转载自:

http://TV7qxKSO.Lbgfz.cn
http://CrzmNIw3.Lbgfz.cn
http://xmG9PwBR.Lbgfz.cn
http://kEEdTSGL.Lbgfz.cn
http://IpSF5t3P.Lbgfz.cn
http://SiNFWtHe.Lbgfz.cn
http://dO2o49Z1.Lbgfz.cn
http://edGrR8ZZ.Lbgfz.cn
http://gaN334kT.Lbgfz.cn
http://0npUfTje.Lbgfz.cn
http://WtOlMK4k.Lbgfz.cn
http://UcKpDHiN.Lbgfz.cn
http://wbKMH13p.Lbgfz.cn
http://84v7N3ZP.Lbgfz.cn
http://3yImqREd.Lbgfz.cn
http://TEc2s5g3.Lbgfz.cn
http://RCy5ewSq.Lbgfz.cn
http://igJCB4q8.Lbgfz.cn
http://6ppoBhsg.Lbgfz.cn
http://WphkQfOX.Lbgfz.cn
http://7PvSv4TB.Lbgfz.cn
http://U9Xkbu2b.Lbgfz.cn
http://VMcRBmzc.Lbgfz.cn
http://ZJ4NJyYM.Lbgfz.cn
http://SB4oyJcr.Lbgfz.cn
http://wMwtiHFg.Lbgfz.cn
http://YcUND1RP.Lbgfz.cn
http://HXrZVYvL.Lbgfz.cn
http://G9ge48Z4.Lbgfz.cn
http://BvkZpZ3A.Lbgfz.cn
http://www.dtcms.com/a/370776.html

相关文章:

  • 计算机视觉(八):开运算和闭运算
  • 工业显示器在地铁电力监控与运维中的应用
  • 集成学习 —— 梯度提升树GBDT、XGBoost
  • c++八股文1
  • CAD:注释
  • C++ 并发编程指南 并发设计模式:Actor vs. CSP (生活场景版)
  • LeetCode 468. 验证IP地址 - 详细解析
  • OpenLayers常用控件 -- 章节六:全屏控件教程
  • 7.网络虚拟化
  • 基于树莓派与Jetson Nano集群的实验边缘设备上视觉语言模型(VLMs)的性能评估与实践探索
  • AI工具深度测评与选型指南 - 文本生成与处理类
  • 【Proteus仿真】定时器控制系列仿真——LED小灯闪烁/流水灯/LED灯带控制/LED小灯实现二进制
  • 十三、计算机领域英语
  • 设计模式Design Patterns:组合Composite、命令Command、策略Strategy
  • 【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置
  • 【STM32HAL-----NRF24L01】
  • cocos2d. 3.17.2 c++如何实现下载断点续传zip压缩包带进度条
  • gcloud cli 使用 impersonate模拟 服务帐号
  • leetcode 3495. 使数组元素都变为零的最少操作次数-C语言
  • 把装配想象成移动物体的问题
  • mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南
  • 【问题记录】IIS 报500.19,如何解决
  • 【LLM】Openai分析大模型出现幻觉的原因
  • C++算法学习——链表
  • 驱动——Platform
  • LeetCode 139. 单词拆分 - 动态规划解法详解
  • 开源AI智能名片链动2+1模式S2B2C商城小程序服务提升复购率和转介绍率的研究
  • HTTP协议——Cookie的相关概念和使用
  • redis的数据类型:Hash
  • PiscCode使用 Mediapipe 实时人脸表情识别与可视化