常見的系統平台與架構說明--以開源檔案檔名為例

以 Bore 為例,下圖是 Bore 的 Assets file

檔案命名依照使用 “-” 做分隔,依序為

  1. 產品名稱
  2. 版本
  3. CPU Archicture
  4. OS
  5. Runtime (C Compiler)

接下來會介紹 CPU Archicture 跟 Runtime (C Compiler) 的差異

  • CPU Archicture CPU 的架構,涉及到的內部組件配置、數據處理方法、支持的指令集合。簡單來說就是 CPU 如何執行指令、運算及與電腦溝通的方式。指令集通常會再分為 64bits 或是 32bits,取決於電腦的 CPU,常見的指令集有底下三種:

    1. x86:一般的 Windows 使用的指令集,由 Intel 開發設計
      • 32bits (x86, x86_32, i686)
      • 64bis (x86_64, amd64):取名叫 amd64 的原因在於一開始 Intel 並不打算開發 64 位元的指令集給一般大眾使用,不過 AMD 這間公司做出來後大受好評,所以 Intel 才也跟上出了 x86_64。
    2. ARM:一般手機使用的指令集,由 ARM 開發設計
      • 32bits (v7)
      • 64bits (v8, aarch64)
    3. RISC-V:開源的指令集,目前較少見
  • Runtime (C Compiler) C 語言在開始執行程式前,如果有需要用到 I/O 的功能,都要先 #include <stdio.h>,才會有 I/O 相關的 stdandard library 可以用,裡面會有如何與電腦互動的實作。例如 printf 要怎麼印出,這樣程式語言才有可執行性,否則你只是使用的 printf 就只是一個函數,沒有辦法實際使用。 而 Runtime 就是這些實作的機器碼,會去呼叫不同作業系統的 API,再藉由這些 API 去和電腦的 I/O 做互動。 file

    一般來說,這些編譯出來的 Runtime 都會直接連結到電腦的 stdlib 來實作,但其實 library 是可以換的。需要換的情形常見是因為直接綁死電腦的 stdlib (Dynamic link),也就是 .so 檔,可能會造成版本不相容導致在其他電腦執行不了,所以直接換成自己檔案本身包進去的 stdlib (Static link) 就可以不受版本不同的影響。 常見的 C Compiler 有

    • Windows
      • msvc ( Microsoft Visual C),大概佔據 9 成以上
      • mingw (從 Linux 的 gcc 的移植),DevC++ 就是使用這個
      • clang
    • Linux
      • gcc,預設是 gnu libc 的動態連結 (Dynamic link),gnu libc 也有靜態連結 (Static link),不過做的不完全,有時候還是會用到 OS 的 .so 檔。替代方案是可以換成 musl libc,這個是靜態連結且做得較好。
      • clang
    • Darwin (Apple pc)
      • clang

所以回頭看 Bore 的檔案命名:

  • bore-v0.5.1-aarch64-apple-darwin.tar.gz:表示該檔案要在 Apple 的 pc 上跑,使用的指令集是 ARM 的 64 bit
  • bore-v0.5.1-i686-unknown-linux-musl.tar.gz:表示該檔案要在 Linux 上跑 (unknown 表示不確定是哪個版本,可能是 Ubuntu, Rocky Linux 或其他版本能跑得動),使用的指令集是 x86 的 32 位元,C Compiler 則是 gcc,但 standard library 的連結方式改成 msul (屬於動態連結)
  • bore-v0.5.1-x86_64-pc-windows-msvc.zip:表示該檔案要在 Windows 的 pc 上跑,使用的指令集是 x86 的 64 位元,C Compilier 則是用 Microsoft 預設的 msvc
Was this article helpful? Votes: 0
Article details:
Published date: 28/06/2024 3:21AM
Last updated: 03/07/2024 5:48AM (How - how.kao@nuwainfo.com)
Share article: 
Author: How (how.kao@nuwainfo.com)
Permalink: https://knowledge.nuwainfo.com/kb/405537