系統開發 什麼是toolchain ?
在系統開發中,Toolchain通常是指一組用於開發、編譯、調試和部署軟件的工具集合。
這個工具集合可能包括編譯器、連結器、除錯器、自動化測試工具、分析器、編輯器和其他一些必要的工具。
Toolchain的目的是提供開發人員一個統一的平台,讓他們可以使用這些工具來開發軟件,並且能夠確保產生的代碼能夠在目標平台上正常運行。
Toolchain可以用於各種系統開發,包括嵌入式系統、桌面應用程序、服務器端應用程序等等。
在開發軟體過程中,一組工具鏈(英語:toolchain)是一系列用於製作軟體程式的工具。這些工具一般一個接一個地運用,上一個工具的輸出即是下一個工具的輸入,因此得名。但工具鏈這個詞彙也可指涉這些工具並無此相依執行的限制。
通常一個軟體開發的工具鏈由以下組成:
- 編譯器
- 連結器 (將原始碼/目的碼轉換成可執行程式檔)
- 函式庫 (提供與作業系統之間的介面)
- 除錯器 (用來測試、除錯所產出的程式)
wiki:toolchain
In software, a toolchain is the set of computer programs (tools) that are used to create a product (typically another computer program or system of programs). The tools may be used in a chain, so that the output of each tool becomes the input for the next, but the term is used widely to refer to any set of linked development tools.
GNU工具鏈(英語:GNU toolchain)是一個包含了由GNU計劃所產生的各種編程工具的集合,由自由軟體基金會負責維護工作。這些工具形成了一條工具鏈,用於開發應用程式和作業系統。
GNU工具鏈在針對嵌入式系統的Linux核心、BSD及其它軟體的開發中起著至關重要的作用。GNU工具鏈中的部分工具也被Solaris, Mac OS X, Microsoft Windows (via Cygwin and MinGW/MSYS) and Sony PlayStation 3[1]等其它平台直接使用或進行了移植。
wiki:GNU toolchain
The GNU toolchain is a blanket term for a collection of programming tools produced by the GNU Project. These tools form a toolchain (suite of tools used in a serial manner) used for developing applications and operating systems.
- GNU make:用於編譯和構建的自動工具;
- GNU編譯器集合(GCC):一組多種程式語言的編譯器;
- GNU Binutils:包含連結器、組譯器和其它工具的工具集;
- GNU Bison: 編譯器編譯程式,經常和 Flex詞法剖析器 配合使用;
- GNU m4: m4 宏預處理器
- GNU Debugger(GDB):代碼除錯工具;
- GNU構建系統(autotools):
相關應用:
做embedded system是需要toolchain。但當編譯某些Library或是open source的程式時,若遇到廠商所提供的toolchain版本過舊而產生錯誤,就要自己建力特定版本的toolchain來解決問題。
以下是一些網友的介紹:
- 自己做toolchain
- 在ubuntu上建立arm toolchain
- 建立Toolchain
- 另外推薦CodeSourceryhttp://www.codesourcery.com/
據說CodeSourcery的幾個員工都是領導 GCC 發展的大人物,所以CodeSourcery 出品的 toolchain品質有保證。
以下是一些常見的 toolchain 組合:
- Web 開發:HTML/CSS/JavaScript + React + Node.js + Express + MongoDB
- 行動應用程式開發:Java/Kotlin/Objective-C/Swift + Android/iOS SDK + React Native/Xamarin/Flutter
- 嵌入式系統開發:C/C++ + GCC + GDB + Make + OpenOCD
- 機器學習開發:Python + NumPy + TensorFlow + Keras + Jupyter Notebook
- DevOps:Git + Jenkins/Travis CI/CircleCI + Docker + Kubernetes
這些組合不是固定不變的,實際上,不同的開發團隊、專案和技術堆棧都會使用不同的工具鏈組合。
留言
張貼留言
發表一下意見,互動一下唄!