1. 程式人生 > >Ubuntu下clang開發工具簡易入門知識(一)

Ubuntu下clang開發工具簡易入門知識(一)

首先,需要要選擇好正確的介面(Choosing the Right Interface for Your Application)

基於clang的應用主要三種介面:

LibClang:

一套穩定的高級別C介面, 抽象程度高,以cursor為訪問單位(CXCursor),向後相容性好,有源自於它的python bindings(clang_complete的開源專案中使用了它). 比較好用,最後的工具就像普通的程式一樣編譯即可,只是要-l的內容多一些,配合RecursiveAST和Rewriter能夠做不少事.

詳細解說可以見以下視訊:

但要注意這個介面無法完全得到ClangAST的資訊,下面兩個都可以,但有其他限制.(可以嘗試一下將所有的CXCursor中的token輸出,和clang plugin中的-ast-dump產生的效果比較一下就知道了)

Clang Plugins

這套介面用於clang在編譯時,給AST(抽象語法樹)增加一些額外的動作,能夠提供lint風格(一款出錯檢測軟體)的warnings 或者 errors, 這個工具可以完全得到ClangAST的資訊,但如果離開你的clang的build環境,該工具無法使用. 大致來說該工具的使用樣子: clang++ -D_GNU_SOURCE -D_DEBUG 等配置引數 \ -I幾個include路徑 待檢測檔名(.cpp等) -fsyntax-only \ -Xclang 該工具名(二進位制檔案) 可以參考該視訊的後半部分(使用了-ast-dump等工具,需要翻wall):
http://www.youtube.com/watch?v=VqCkCDFLSsc

LibTooling

這套C++介面可以用來做獨立的工具,可以完全控制,目前已有一些Clang的專案加入到Clang官方的Examples中,clang-check,clang-fixit,clang-format等 其中比較有用的是ASTMatcher,它使用了自己的DSL(Domain Specific Language)來匹配一些AST結點.

PS:

其實翻Wall的視訊中介紹了AST結點是什麼樣子的,我這裡再貼一下:

檔案內容:

int main(){
int a;
return 0;
}

-ast-dump的結果:

TranslationUnitDecl 0xc809540 <<invalid sloc>>
|-TypedefDecl 0xc809810 <<invalid sloc>> __builtin_va_list 'char *'
`-FunctionDecl 0xc809880 <newfile.c:1:1, line:4:1> main 'int ()'
  `-CompoundStmt 0xc809958 <line:1:11, line:4:1>
    |-DeclStmt 0xc809920 <line:2:2, col:7>
    | `-VarDecl 0xc8098f0 <col:2, col:6> a 'int'
    `-ReturnStmt 0xc809948 <line:3:2, col:9>
      `-IntegerLiteral 0xc809930 <col:9> 'int' 0

相關推薦

Ubuntuclang開發工具簡易入門知識()

首先,需要要選擇好正確的介面(Choosing the Right Interface for Your Application) 基於clang的應用主要三種介面: LibClang: 一套穩定的高級別C介面, 抽象程度高,以cursor為訪問單位(CXCursor

TQ2440 學習筆記—— 4、安裝 Ubuntu 開發工具

使用的板子是TQ2440,但學習的視訊是韋東山老師的視訊,所以虛擬機器裡面用的Linux是韋東山老師介紹的Ubuntu 9.10 下面是在Ubuntu9.10裡面安裝開發工具 由於第一次使用Ubuntu,對命令的使用不是特別熟悉,所以記錄下。 先將光盤裡Linux目錄下

Linux開發工具:vim,gcc,gdb,makefile以及yum語句安裝軟體

Linux下的開發工具:vim,gcc,gdb,makefile以及yum語句安裝軟體 1. vi/vim  vi/vim都是多模式編譯器,vim是vi的升級版本。vim有12個模式,在這我們先說3種模式,命令模式,插入模式,底行模式。 2. vim基本操作: $vim t

ubuntuzephyr開發環境搭建以及移植到iMX.7S的M4核心的過程

zephyr開發環境搭建 首先介紹如何在ubuntu16.04 Desktop環境下搭建Zephyr開發環境。構建Zephyr開發環境除了需要正確獲取Zephyr原始碼和Zephyr SDK,還需要正確安裝python3、cmake和git等工具。 更新軟體源 sudo apt-get

開發工具___eclipse入門

寫在前面 目前常用的開發工具有eclipse、IntelliJ IDEA等。工欲善其事必先利其器,想做一個好的Coder,就必須瞭解自己所使用的工具。善於利用快捷鍵可以提高編碼效率。這一篇先介紹eclipse的使用小技巧。以後有空再續IntelliJ IDEA的使用說明。

基於Python 3.6的UbuntuTensorFlow開發環境配置

準備 這裡使用的是Ubuntu 18.04 LTS版本; 第一步,需要先切換Root使用者,需要先切換Root使用者,需要先切換Root使用者,重要的事說三遍!! su 首次切換前需要設定密碼 sudo passwd root 安裝Python 3.6 Ubu

Ubuntu純程式碼編寫簡易貪吃蛇遊戲(第二次做)

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h

ubuntu的安裝工具apt-get

前一段時間在ubuntu 12.10上安裝軟體。系統的apt在別人裝軟體失敗後變得很奇怪,總是提示一些奇怪的資訊。不管怎麼樣,就是不幹活!所以,有了這篇內容。一、通常情況下,在安裝軟體的時候(比如apache2),執行sudo apt-get install apache2二

PX4開發(1):ubuntupixhawk開發環境搭建

1. 介紹 之前買了個330的四軸,最近想利用起來,所以買了個pixhawk來玩。pixhawk是開源的,所以想看看能不能在其基礎上開發出什麼。 要做開發首先要配置環境,由於官方推薦在linux環境下開發,所以這裡介紹ubuntu下pixhawk的開發環境配

UbuntuJava開發環境搭建

1、安裝JDK (2)解壓檔案,開啟終端輸入:  sudo tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/jdk/ (我安裝到/usr/loc

JSP網站開發之HTML入門知識及常用標記符 (

        最近發生的事情很多,其中一件很重要的事情就是:學生生涯的結束,教學生涯的開始。我準備下個月寫一篇總結研究生生涯的文章,包括自己放棄網際網路選擇回家教書、找工作經歷、專案和畢業設計的各種感想。很榮幸XB七月初就給了我第一次大學教學的經歷,很享受很珍惜也很感觸。

UbuntuAndroid開發:手機不能識別

在windows下,Android手機連線PC非常簡單,但是當我切換到ubuntu下時,發現Target列表中出現一行“????? N/A unknown ”類似這樣一行的內容,說明PC無法正確識別手機,通過查詢相關資料後,進行相關設定,發現可以連線PC了,故在此記錄下來,

ubuntu clang最新的安裝方法已經繫結命令

- 介紹 場景:折騰atom,遇到其中外掛autocomplete-clang 無法正常工作. 原因&分析:先下的clang 5.0結果要在終端下要這樣clang-5.0 才可以呼叫,如果修

Ubuntu安裝MySQL安裝及入門

最近在學習SQL語言,只學語言很無聊,想來裝上MySQL邊學習,邊練習SQL語言。 MySQL安裝 Ubuntu下安裝MySQL的命令如下 sudo apt-get install mysql-server sudo apt-get instal

ubuntu安裝autotools工具

本文參考了: http://www.linuxidc.com/wap.aspx?nid=36616&p=1&cp=2&cid=6&sp=1019 轉載請註明出處---------------謝謝 首先需要下載: m4-1.4.14.tar.gz autoconf-2.13.

ubuntuqt開發介面程式

開發環境ubuntu16[email protected]:~$ qmake -versionQMake version 3.0Using Qt version 5.6.2 in /home/zhao/anaconda3/lib程式的執行效果如下:程式實現步驟如下:

ubuntuDjango的安裝和使用(

ins tle nag 連接 ubunt apt 工具 process 運行 (一):背景在線 由於現在工作的需要,我需要使用Python來進行一個網站後臺的開發,python之前接觸過其語法的學習,基本的東西已經掌握,但是當時自學的時候是學得python3.5,而現在要使

【轉】Ubuntu做日常開發電腦的系統是種怎樣的體驗

和我 manager sublime 分享圖片 ffice 最好的 技術 重要 zsh 【原文】https://www.toutiao.com/i6594291159911105031/ Ubuntu 我現在已經基本不開windows了.學習娛樂開發基本都在Ubuntu

(轉)Windows10的docker安裝與入門)使用docker toolbox安裝docker

查看 ads 而不是 tar bubuko 安裝docker install 流行 移植 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相

我在Ubuntu用到的工具軟件(開發

shadow 如果 comm git服務器 很多 平臺 nag 對比 scrip 上一篇主要是常用辦公軟件的介紹,這一篇則介紹我在軟件開發工作中用到的一些工具軟件。  使用電腦系統時,特別是在Windows下,軟件的費用實際上比硬件貴,尤其是某些專業軟件(這裏指的是正版軟件