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.pswp.cn/pingmian/96064.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96064.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96064.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker 部署 Rancher2.4.4

獲取2.4.4鏡像包docker pull rancher/rancher:v2.4.4創建目錄并賦予權限mkdir -p /home/rancher/{data,log} && chmod -R 777 /home/rancher啟動容器docker run -d \ --privileged \ --name rancher \ --restartunless-stopped \ -p 80:80 -p 443:443 \ -v /home/ranc…

無root使用adb模式下的scene 用shizuku激活scene教程

本次教程是用shizuku和ShizukuRunner激活scene的adb模式&#xff0c;實現大部分功能&#xff0c;比較簡單&#xff0c;如果手機已經root直接使用root模式即可。 工具 scene(點我下載) Shizuku(點我下載) ShizukuRunner(點我下載) 教程 1.首先要有一臺支持無線調試的手機(安…

《UE5_C++多人TPS完整教程》學習筆記50 ——《P51 多人游戲中的俯仰角(Pitch in Multiplayer)》

本文為B站系列教學視頻 《UE5_C多人TPS完整教程》 —— 《P51 多人游戲中的俯仰角&#xff08;Pitch in Multiplayer&#xff09;》 的學習筆記&#xff0c;該系列教學視頻為計算機工程師、程序員、游戲開發者、作家&#xff08;Engineer, Programmer, Game Developer, Author&…

樹莓派 Ubuntu 24.04 開機換源總結

1. 圖形界面 (桌面版) 如果你刷的是 Ubuntu Desktop 24.04&#xff1a;打開 Software & Updates&#xff08;軟件和更新&#xff09;。在 Ubuntu Software 標簽里找到 Download from 下拉菜單。默認只有 Main server 和 Server for China&#xff0c;如果想要更多選擇&…

工業顯示器在地鐵電力監控與運維中的應用

在地鐵電力監控與運維中&#xff0c;工業顯示器憑借其高可靠性、環境適應性和強大的功能集成&#xff0c;成為保障地鐵供電系統安全穩定運行的核心設備。以下從關鍵應用場景、技術優勢及實際案例三個維度展開分析&#xff1a;一、核心應用場景變配電室與環控電控室監控 工業顯示…

Docker 快速部署單節點 NiFi 1.27

Docker 快速部署單節點 NiFi 1.27 前言 Apache NiFi 是一款強大的數據集成工具&#xff0c;專注于數據的采集、處理和分發&#xff0c;具有可視化流程設計、強大的容錯能力等特點。通過 Docker 部署可以快速搭建環境&#xff0c;省去復雜的配置步驟。本文介紹如何使用官方鏡像…

php redis 中文API文檔手冊

php redis 中文API文檔手冊 Redis::__construct構造函數 $redis new Redis();connect, open 鏈接redis服務 參數 host: string&#xff0c;服務地址 port: int,端口號 timeout: float,鏈接時長 (可選, 默認為 0 &#xff0c;不限鏈接時間) 注: 在redis.conf中也有時間&#xf…

Windows環境下實現GitLab與Gitee倉庫代碼提交隔離

1. 背景 在開發工作中&#xff0c;我需要同時使用2個代碼托管平臺&#xff1a;公司統一使用的GitLab和個人學習用的 Gitee。我希望能夠在同一臺電腦上方便地管理和提交兩個平臺的代碼&#xff0c;實現賬號和提交內容的有效隔離。 前提條件&#xff1a; 已安裝Git Bash、Tort…

深度解析:抗輻射電源芯片 ASP4644S2B 在空間環境中的單粒子效應表現

摘要&#xff1a;隨著航天技術的飛速發展&#xff0c;空間電子設備面臨著日益復雜和嚴苛的輻射環境挑戰。單粒子效應&#xff08;SEE&#xff09;作為輻射環境對半導體器件影響的主要形式之一&#xff0c;極大地影響著航天電子系統的可靠性和穩定性。本文通過系統梳理國科安芯推…

【RabbitMQ】如何在 Ubuntu 安裝 RabbitMQ

1. 安裝部署 Erlang 環境 RabbitMQ 是一套開源的消息隊列服務軟件&#xff0c;基于 Erlang 語言編寫的&#xff0c;因此&#xff0c;在安裝 RabbitMQ 之前&#xff0c;我們需要先部署 Erlang 環境&#xff0c;再安裝 RabbitMQ 環境&#xff08;就像運行 Java 程序&#xff0c;…

vue集成高德地圖API工具類封裝

import axios, { AxiosInstance, AxiosResponse } from axios;// 高德地圖 API 響應基礎結構 interface AMapResponse {status: string;info: string;infocode: string; }// 逆地理編碼響應結構 interface RegeoResponse extends AMapResponse {regeocode: {formatted_address:…

手寫 Tomcat

文章目錄02 初出茅廬:構造一個極簡的 HttpServerRequestResponseHttpServer03 動態 Response : 按照規范構造返回流04 各司其職的 Server : 拆分響應模塊與處理模塊HttpConnectorHttpProcessor05 Server 性能提升: 設計多個 ProcessorHttpConnectorHttpProcessor06 規范化: 引入…

嵌入式ARM架構學習3——啟動代碼

一 匯編補充&#xff1a;area reset, code, readonlycode32entry;mov r0, #4 ; r0 4;mov r1, r0 ; r1 r0;mov r2, r1, lsl #1 ;r2 r1 << 1 乘2;mov r3, r1, lsr #1 ;r3 r1 >> 1 除2;mov r4, r1, ror #2;mov r0, #100 ;100是十進制 轉為16進制賦值給十進制;mov …

PNPM庫離線安裝方案

以下是幾種可行的方案&#xff0c;推薦優先使用方案一。 方案一&#xff1a;使用離線鏡像&#xff08;Offline Mirror&#xff09; - 最優雅、最PNPM的方式 這是 PNPM 官方推薦的處理離線環境的方式。它會在內網電腦上創建一個所有依賴包的壓縮文件&#xff08;tarball&#x…

[Wit]CnOCR模型訓練全流程簡化記錄(包括排除BUG)

stepfile:step 00 創建數據集 目錄結構 yourproject -data --myset ---images #存放訓練圖片 ---dev.tsv #測試標簽 tsv格式 圖片文件名\t內容 ---train.tsv #訓練標簽 tsv格式 圖片文件名\t內容 -train_config.json -train_config_gpu.json -fix_cnocr_encoding.py step 01 創…

Sklearn(機器學習)實戰:鳶尾花數據集處理技巧

1.數據集的使用&#xff1a;先使用load導入鳶尾花數據&#xff1a;from sklearn.datasets import load_iris然后定義一個函數來查看鳶尾花數據集&#xff1a;數據集的獲取&#xff1a;iris load_iris()print(鳶尾花的數據集&#xff1a;\n,iris)使用iris[DESCR]來查看數據及里…

【企業微信】接口報錯:javax.net.ssl.SSLHandshakeException

詳細報錯信息 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target原因 關于qyapi…

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法 1 論文核心概念 本文提出了一種基于集成光子芯片的光學子空間神經網絡(Optical Subspace Neural Network, OSNN),用于胰腺癌的早期檢測與圖像分割。其核心思想是利用光子芯片的高并行性、低延遲和低能…

Scikit-learn Python機器學習 - 特征降維 壓縮數據 - 特征提取 - 主成分分析 (PCA)

鋒哥原創的Scikit-learn Python機器學習視頻教程&#xff1a; 2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程主要講解基于Scikit-learn的Python機器學習知識&#xff0c;包括機器學習概述&#xff0c;特征工程(數據…

【Python】pytorch安裝(使用conda)

# 創建 PyTorch 虛擬環境 conda create -n pytorch_env python3.10# 激活環境 conda activate pytorch_env# 安裝 PyTorch&#xff08;CPU版本&#xff09; conda install pytorch torchvision torchaudio cpuonly -c pytorch# 或者安裝 GPU 版本&#xff08;如果有NVIDIA顯卡&…