当前位置: 首页 > 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://www.xdnf.cn/news/1478449.html

相关文章:

  • Nginx停止脚本命令
  • 性能优化的边界-不该优化什么
  • PostgreSQL三种关闭方式的区别
  • 详解文件操作
  • 数据库集群分类详解
  • 【Java】抽象类和接口对比+详解
  • Altium Designer(AD24)加载License文件方法
  • 计算机CPU的工作原理介绍
  • 抽成独立组件库:微前端架构下公共组件共享的最佳实践
  • MyBatis Example模式SQL注入风险
  • C#中一段程序类比博图
  • 【完整源码+数据集+部署教程】水培植物病害检测系统源码和数据集:改进yolo11-AKConv
  • 从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
  • 【科研成果速递-IJGIS】如何描述与分类移动对象的时空模式?一个新的分类框架与体系!
  • JDBC操作数据库所需要的组件
  • 《Kubernetes 构建 MySQL MGR 集群实战教程》
  • 使用Spring Boot DevTools快速重启功能
  • Python爬虫实战:研究Event Handling机制,构建在线教育平台的课程数据采集和分析系统
  • 使用 YAML 自动化 Azure DevOps 管道
  • browser-use 的三种启动方式详解
  • Android Framework智能座舱面试题
  • 【Python自动化】 21.2 Pandas 读取 Excel 时的 dtype 参数完全指南
  • 贪心算法应用:DNA自组装问题详解
  • Flask论坛与个人中心页面开发教程完整详细版
  • 【LeetCode 热题 100】49. 字母异位词分组
  • Windows 11 手动下载安装配置 uv、配置国内源
  • 固定资产管理系统(vue+Springboot+mybatis)
  • 行为式验证码技术解析:滑块拼图、语序选词与智能无感知
  • Vllm-0.10.1:vllm bench serve参数说明
  • 【完整源码+数据集+部署教程】农作物病害检测系统源码和数据集:改进yolo11-HSFPN