發布 ForgeZero 1.9.0,一款用於 C 和組合語言的建置工具

ForgeZero 1.9.0 (fz) 已發布,這是一個用於建立 C、C++ 和彙編語言(NASM、GAS、FASM)專案的命令列工具。該工具的基本使用無需 Makefile 或其他設定檔。專案程式碼使用 Go 語言編寫,並採用 MIT 許可證。

ForgeZero 會偵測檔案類型並自動選擇適當的後端。每個程式碼檔案都會被編譯成一個目標文件,然後檢查所有目標檔案中是否存在重複的全域符號,最後連結成一個執行檔。編譯後的檔案會被緩存,只有在關聯的程式碼檔案發生變更後才會重新編譯。此外,還可以選擇在程式碼檔案更新後追蹤檔案系統變更並重新編譯。

支援的編譯器包括 GCC、Clang、G++ 和 Clang++;彙編器包括 NASM、GAS 和 FASM;連結器包括 LD、GCC 和 Clang;並且支援 AR 歸檔器。 C 和 C++ 的強制警告包括:`-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion`。 AddressSanitizer 和 UndefinedBehaviorSanitizer 清理器預設為啟用(可使用 `-sanitize=false` 標誌停用)。支援的平台包括: Linux, macOS, Windows (WSL2 和實驗性原生)。

1.9.0版本主要變更:

  • 添加了“-target”標誌fz 能夠為任何架構進行交叉編譯,並支援對應的工具前綴。 fz 會根據指定的識別碼(例如「arm-linux-gnueabihf-gcc」)自動決定編譯器、連結器和歸檔器的名稱。它支援所有標準的 GNU 目標平台,包括 arm-linux-gnueabihf、aarch64-linux-gnu 和 riscv64-linux-gnu。
  • 已實現對語言伺服器協定 (LSP) 的支援。 「-compile-commands」標誌會在專案根目錄產生一個 compile_commands.json(編譯資料庫)檔案。 clangd 和 ccls 語言伺服器會讀取此文件,從而在支援 LSP 的編輯器(例如 Neovim、VSCode、CLion、Emacs 等)中啟用自動補全、程式碼導航和診斷功能。
  • fz“-update”命令現在會在安裝新版本之前將當前二進位檔案儲存到/usr/local/bin/fz.old,這樣您就可以回滾到先前的版本而無需重新安裝。
  • 修正了多目錄專案中的一個錯誤,該錯誤會導致不同子目錄中具有相同基本名稱的檔案相互覆蓋彼此的目標檔案。現在,目標檔案名稱將根據原始檔案的完整相對路徑產生。
  • 實作了用於建立單一檔案的交互模式“fz -shell”。
  • 已為 SplitCommand、CmdSet 和 CmdBuild 命令新增了測試覆蓋率。連結器包的測試覆蓋率已從 17% 提高到 60%,所有包的覆蓋率均已超過 40%。
  • 為測試缺少工具鏈組件的場景新增了 CheckTool 替換機制。

與先前版本相比的變化:

  • 版本 1.8.0 實作了靜態函式庫的組裝(-type static / -lib),確保多目錄專案中物件檔案名稱的唯一性,並修復了與遍歷「..」路徑相關的組裝子系統中的錯誤。
  • 版本 1.7.0 增加了平行編譯(-j N, 0 — 自動偵測核心數)、對連結器腳本(-T)和入口點位址(-Ttext)的支援、互動模式(fz -shell)、明確選擇輸出格式(elf32、elf64、bin)、使用與 C 相同的嚴格警告標誌 Cpp.c.c.c.
  • 版本 1.6.0 新增了專案初始化(fz -init,建立 .fz.yaml、.fzignore、README.md)、引導程式和韌體的 bin 格式支援(-format bin)以及配置欄位 libs、flags.cc、flags.asm、flags.ld。
  • 版本 1.5.0 引入了多個來源目錄 (source_dirs)、明確文件清單 (source_files)、包含/排除模式、連結器庫的 libs 欄位、.fzignore 檔案以及設定檔的多層合併。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster