當前位置:首頁 » 編程軟體 » llvmclang編譯器

llvmclang編譯器

發布時間: 2022-08-03 03:04:45

『壹』 如何學習 clang和LLVM,需要哪些知識

我最近和Clang/LLVM打交道比較多,目前游離在LLVM IR和IBM WCode之間。對於學習Clang/LLVM來說,其實需要看你做什麼,是研究C, C++, Objective-C在Clang的實現,抑或著是想利用Clang做AST層面的事情,還是說想要利用LLVM IR來做

『貳』 綜合來說,幾大主流C++編譯器(icc,gcc,clang,vc++等)究竟孰優孰劣

我曾編出各種C++ 11編譯器的支持,並有C++ 14編譯器支持一批。


實際使用

對VC編譯的速度不斷提高,內存佔用已經從VC12開始明顯提高,而最明顯的是可變參數模板。還有內置的代碼靜態分析,在實際中很有用。32位保護模式下,ss寄存器存的是一個段選擇子,選擇子是一個數字,通過IDT(局部描述符表)或者GDT(全局描述符表)選擇一個段描述符,描述符裡面的信息包含該段的取值范圍和大小。

vc14的靜態分析不在每次載入一個ie(對,以前每分析一個.cpp,就載入一次ie!),速度快了相當多。



『叄』 如何使用clang+llvm+binutils+newlib+gdb搭建交叉編譯環境

測試環境:Windows8.1 + MSYS2 with Mingw, Clang, LLVM + GNU Tools for ARM Embedded Processor


  1. 首先用用Clang生成LLVM位元組碼

    clang -emit-llvm --target=arm-none-eabi -mcpu=cortex-m3 -mthumb -mfloat-abi=soft

    注意,需要手動添加GNU Tools for ARM Embedd的頭文件

  2. 然後用llc生成匯編代碼

  3. 接著,使用GNU Tools for ARM Embedded Processor的匯編器生成可執行文件

    arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mfloat-abi=soft

    二進制文件用GNU Tools for ARM Embedded Processor里的arm-none-eabi-obj生成

  4. 一些需要注意的地方是Clang的默認配置可能和目標架構的匯編器不一致。比如arm-none-eabi-as會默認開啟short-enums,當直接使用arm-none-eabi-gcc時這不是問題,因為編譯器也默認開啟了這個選項,但Clang不會,所以需要手動加上-fshort-enums。

『肆』 xcode裡面有llvm clang編譯器嗎

Xcode 中最開始使用的是 GCC,後來開始引入 LLVM 後端(前端仍然是 GCC),再後來引入 Clang 前端,再後來 Clang/LLVM 成為默認,然後從 Xcode 5.0 版本以後,Clang/LLVM 是唯一提供的編譯器套件。

『伍』 安裝xcode 6後,為什麼在MAC電腦的terminal里打gcc -v 會顯示LLVMLLVM和GCC不是兩個不同的編譯器嗎

Mac OS 現在都是默認使用clang+llvm編譯,以前使用gcc+llvm。
只是現在還可以使用gcc命令 [編譯實際還是用clang+llvm編譯]。
要想用gcc, 需要自己單獨裝。

『陸』 Clang 比 GCC 編譯器好在哪裡

1:Clang編譯速度更快、編譯產出更小、出錯提示更友好。
2:clang還內置有靜態分析工具,可以對代碼進行靜態分析(clang --analyze)。這是gcc做不到的。
3:clang結構更簡單。因為clang只需要完成詞法和語法分析,代碼優化和機器代碼的生成工作由llvm完成。所以和全部由自己包下的gcc比起來,clang可以更專注地做好一件事。
4:Clang 的另一個優勢是代碼結構清晰,可以作為庫使用,成為其它 app(主要是 IDE)的內嵌 C/C++ parser。這樣,editor 工具可以使用和 compiler 一樣的 parser 來完成 edit-time 的語法檢查。GCC 的結構比較混亂。業界一直有說法是 FSF 故意如此,以便讓 GCC 無法作為其它 app 的內嵌部分。
5:Clang採用的是BSD協議。這是蘋果資助LLVM、FreeBSD淘汰GCC換用Clang的一個重要原因。

『柒』 適合win10系統的c語言編譯器

桌面操作系統

對於當前主流桌面操作系統而言,可使用 VisualC++、GCC以及 LLVM Clang 這三大編譯器。

Visual C++(簡稱 MSVC)只能用於 Windows 操作系統;GCC 和 LLVM Clang除了可用於Windows操作系統之外,主要用於 Unix/Linux操作系統。

像現在很多版本的 Linux 都默認使用 GCC 作為C語言編譯器,而像 FreeBSD、macOS 等系統默認使用 LLVM Clang 編譯器。由於當前 LLVM 項目主要在 Apple 的主推下發展的,所以在 macOS中,Clang 編譯器又被稱為 Apple LLVM 編譯器。

MSVC 編譯器主要用於 Windows 操作系統平台下的應用程序開發,它不開源。用戶可以使用 Visual Studio Community 版本來免費使用它,但是如果要把通過 Visual Studio Community 工具生成出來的應用進行商用,那麼就得好好閱讀一下微軟的許可證和說明書了。

而使用 GCC 與 Clang 編譯器構建出來的應用一般沒有任何限制,程序員可以將應用程序隨意發布和進行商用。

MSVC 編譯器對 C99 標準的支持就十分有限,加之它壓根不支持任何 C11 標准,所以本教程中設計 C11 的代碼例子不會針對 MSVC 進行描述。所幸的是,Visual Studio Community 2017 加入了對 Clang 編譯器的支持,官方稱之為——Clang with Microsoft CodeGen,當前版本基於的是 Clang 3.8。

也就是說,應用於 Visual Studio 集成開發環境中的 Clang 編譯器前端可支持 Clang 編譯器的所有語法特性,而後端生成的代碼則與 MSVC 效果一樣,包括像 long 整數類型在 64 位編譯模式下長度仍然為 4 個位元組,所以各位使用的時候也需要注意。

為了方便描述,本教程後面涉及 Visual Studio 集成開發環境下的 Clang 編譯器簡稱為 VS-Clang 編譯器。

嵌入式系統

而在嵌入式系統方面,可用的C語言編譯器就非常豐富了,比如:

  • 用於 Keil 公司 51 系列單片機的 Keil C51 編譯器;

  • 當前大紅大紫的 Arino 板搭載的開發套件,可用針對 AVR 微控制器的 AVRGCC 編譯器;

  • ARM 自己出的 ADS(ARM Development Suite)、RVDS(RealView Development Suite)和當前最新的 DS-5 Studio;

  • DSP 設計商 TI(Texas Instruments)的 CCS(Code Composer Studio);

  • DSP 設計商 ADI(Analog Devices,Inc.)的 Visual DSP++ 編譯器,等等。


  • 通常,用於嵌入式系統開發的編譯工具鏈都沒有免費版本,而且一般需要通過國內代理進行購買。所以,這對於個人開發者或者嵌入式系統愛好者而言是一道不低的門檻。


  • 不過 Arino 的開發套件是可免費下載使用的,並且用它做開發板連接調試也十分簡單。Arino 所採用的C編譯器是基於 GCC 的。


  • 還有像樹莓派(Raspberry Pi)這種迷你電腦可以直接使用 GCC 和 Clang 編譯器。此外,還有像 nVidia 公司推出的 Jetson TK 系列開發板也可直接使用 GCC 和 Clang 編譯器。樹莓派與 Jetson TK 都默認安裝了 Linux 操作系統。


  • 在嵌入式領域,一般比較低端的單片機,比如 8 位的 MCU 所對應的C編譯器可能只支持 C90 標准,有些甚至連 C90 標準的很多特性都不支持。因為它們一方面內存小,ROM 的容量也小;另一方面,本身處理器機能就十分有限,有些甚至無法支持函數指針,因為處理器本身不包含通過寄存器做間接過程調用的指令。


  • 而像 32 位處理器或 DSP,一般都至少能支持 C99 標准,它們本身的性能也十分強大。而像 ARM 出的 RVDS 編譯器甚至可用 GNU 語法擴展。


  • 下圖展示了上述C語言編譯器的分類。


『捌』 目前主流的C++編譯器有哪些

我用Cfree,也推薦你用這個,這個編譯器是自帶提示的,就是你只要輸入關鍵字或者之前設定函數的前幾個字母,該編譯器就會自動給你「聯想」出你需要的關鍵字或者相關的函數、成員等,這時只需要按下會車就實現自動輸入,這樣不會因為你輸入錯誤而照成不必要的修改……

『玖』 我想自學C++編程,請問需要給電腦安裝什麼軟體

1、gcc

GCC(GNU Compiler Collection,GNU編譯器套件)是由GNU開發的編程語言譯器。GNU編譯器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go語言前端,也包括了這些語言的庫(如libstdc++,libgcj等。)

GCC的初衷是為GNU操作系統專門編寫的一款編譯器。GNU系統是徹底的自由軟體。此處,「自由」的含義是它尊重用戶的自由。

2、llvm+Clang

LLVM是構架編譯器(compiler)的框架系統,以C++編寫而成,用於優化以任意程序語言編寫的程序的編譯時間(compile-time)、鏈接時間(link-time)、運行時間(run-time)以及空閑時間(idle-time),對開發者保持開放,並兼容已有腳本

LLVM計劃啟動於2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持開展。2006年Chris Lattner加盟Apple Inc.並致力於LLVM在Apple開發體系中的應用。Apple也是LLVM計劃的主要資助者。

3、Watcom C/C++

Watcom C/C++ 編譯器、Watch Fortran 編譯器 經已在不其先前所屬公司Sybase售賣, 而被 SciTech 軟體公司 作為 Open Watcom 開源包 發行。類似於其他的 開源編譯器(例如 [GCC])項目,Watcom C代碼小而便攜, 其編譯器後端(代碼生成器)的目標碼可變。

該編譯器可在DOS、OS/2、Windows等操作系統上運行,並生成各種可運行的(不必是該操作系統的)代碼。該編譯器支持Novell NetWare的 NLM 目標碼。目前正進行 為 Linux、modern BSD (例如FreeBSD) 操作系統 重定目標碼,以便在 x86、PowerPC 及其它處理器上運行。

Open Watcom C/C++ 的1.4版於2005年12月發行,採用 Linux x86 為實驗目標, 支持NT、OS/2等host平台曾有某被棄置的QNX版本,但其編譯所須的庫並未開源發行。當前最近的穩定版是1.9版,在2010年6月發行。

4、Digital Mars

DigitalMars是一款高性能的編譯器,功能包含,快速編譯/鏈接時、強大的優化技術、Contract設計、完整的資源庫、瀏覽HTML文檔,反匯編、庫、資源編譯器等。命令行及GUI版本、教程、代碼示例、在線更新、標准模板庫等等。

5、MSVC系列

與Visual Studio集成發布,微軟自己的編譯器,VS是一個基本完整的開發工具集,它包括了整個軟體生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等等。

所寫的目標代碼適用於微軟支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。

『拾』 為什麼c語言有很多不同的版本

C的標准本來就有多個版本,目前編譯器採用的標准比較常見的是ANSI C和C99。另外語言標准中也存在未定義行為,留給編譯器實現自己去定義。各種編譯器對標準的實現也未必完全遵守(C還好,C++這種特別復雜的語言就很難做到完全遵守標准了),而且往往還增加一些自己的擴展,預定義宏之類的。這些都給跨編譯器編碼帶來麻煩。不過總體而言C是個比較單純的語言,除非程序員故意,一般搞不出太多給編譯器出難題的花樣。

熱點內容
sql能力 發布:2025-02-09 10:43:50 瀏覽:982
編譯framework 發布:2025-02-09 10:42:11 瀏覽:382
五子棋對戰演算法 發布:2025-02-09 10:12:19 瀏覽:713
php樹菜單 發布:2025-02-09 10:04:10 瀏覽:360
linux保存ip 發布:2025-02-09 10:04:10 瀏覽:24
四川霜狼伺服器怎麼樣 發布:2025-02-09 10:02:44 瀏覽:146
Vs中h編譯選項是灰的 發布:2025-02-09 10:01:59 瀏覽:558
安卓43怎麼升級44 發布:2025-02-09 09:51:33 瀏覽:464
美國雲伺服器快還是香港快 發布:2025-02-09 09:34:33 瀏覽:989
怎麼解壓qq文件 發布:2025-02-09 09:18:14 瀏覽:581