在將源代碼傳遞給Clang進行編譯時,以什麼順序執行LLVM/Clang代碼?Clang啓動順序?
1
A
回答
2
你究竟是什麼意思?你對編譯階段感興趣嗎,還是你想查看特定方法或類的堆棧跟蹤?
編譯階段:
比方說,你鍵入clang main.c
到終端通過一些源文件clang
。
clang
命令本身只是一個驅動程序,它使用參數並調用實際編譯器(您可以通過傳遞clang
-cc1
參數直接調用它)。
然後,編譯器本身執行以下工作:
- 調用預處理器來處理所有宏定義(
#define
,#ifdef
等) - 符所有源代碼轉換成令牌(
if
關鍵字,while
關鍵字,your_var
標識符等) - 將標記傳遞給解析器,該解析器構造一個Abstract Syntax Tree並應用語義分析,但僅使用 (例如:檢查賦值表達式是否有左值和右值的正確類型)
- 當AST完成生成後,'CodeGen'階段發揮作用:它將解析器傳遞給它的AST轉換爲
- 這裏,最後出現前端階段結束和LLVM:它需要LLVM IR,適用優化和生成彙編代碼或對象的終端用戶平臺的文件(例如:x86_64的,arm64)
Stacktrace:
如果您想查看堆棧跟蹤或調試報告,那麼您自己構建Clang是有意義的。
以下是使用通過GIT中克隆LLVM庫到硬盤後的Xcode OS X上編譯LLVM/Clang的說明:
首先,下載LLVM的源文件:
mkdir ~/Projects/clang-dev
cd ~/Projects/clang-dev
git clone http://llvm.org/git/llvm.git
git clone http://llvm.org/git/clang.git llvm/tools/clang
git clone http://llvm.org/git/clang-tools-extra.git llvm/tools/clang/tools/extra
git clone http://llvm.org/git/compiler-rt.git llvm/projects/compiler-rt
你可以通過將分支名稱傳遞給每個克隆命令來指定確切的版本,例如: git clone http://llvm.org/git/llvm.git -b release_34
接下來,創建並打開Xcode項目:
cd ~/Projects/clang-dev
mkdir build
cd build
cmake -G Xcode CMAKE_BUILD_TYPE="Debug" ../llvm
open LLVM.xcodeproj
設置clang
爲項目的當前目標/計劃,單擊「編輯計劃」,並添加源文件要傳遞給鏘作爲參數,當它運行:
這幾乎是它;只需設置一個斷點(在main
方法或任何時候你想要的)並點擊Run
按鈕(或按Cmd + R)。
UPD
這裏是更詳細的指南:Getting started with LLVM/Clang on OS X
相關鏈接:
Architecture of Open-Source Applications: LLVM by Chris Lattner
相關問題
- 1. Clang慢啓動(使用MinGW)
- 2. GWT啓動順序優化
- 3. Azure角色啓動順序
- 4. 多線程啓動順序
- 5. varnishncsa的啓動順序
- 6. Swift應用程序的啓動順序
- 7. 彈簧啓動中的過濾順序
- 8. Emacs的啓動順序是什麼?
- 9. PHP的啓動順序涉及什麼?
- 10. 控制PicoContainer啓動的順序
- 11. Jboss以錯誤順序啓動servlets
- 12. Uwsgi皇帝封臣啓動順序?
- 13. Tomcat - 以特定順序啓動webapps
- 14. Jenkins項目的順序啓動
- 15. 目標C順序啓動線程
- 16. Windows啓動的順序是什麼?
- 17. 使用jQuery按順序啓動css
- 18. 保證Eclipse插件啓動順序
- 19. Capistrano的順序重新啓動
- 20. 在系統啓動時順序啓動cmd-scripts
- 21. 錯誤啓動使用Clang構建的MacOS應用程序
- 22. 在Android應用程序中使用啓動畫面的啓動順序
- 23. 爲項目啓用clang
- 24. 我可以在clang中更改參數評估的順序嗎?
- 25. 在g ++/clang ++中使用makefile的參數順序
- 26. 通過wsadmin修改應用程序啓動順序
- 27. C#WPF MVVM應用程序的啓動順序
- 28. 使用erlang.mk指定應用程序啓動順序
- 29. iOS應用程序的啓動順序是什麼?
- 30. .ipa啓動時的應用程序條目和調用順序
如果這是解放軍tform和/或IDE依賴,然後我在OS X 10.10 Yosemite和Xcode 6.1.1的上下文中提出這個問題。 – RandomDSdevel 2014-12-08 22:28:00