從 Windows 進行跨平台編譯至 aarch64

2023/12/05 C++

前言

本篇文章將深入介紹如何在Windows上設定開發環境,以實現從Windows到aarch64的跨平台編譯。 MinGW 是一個用於 Windows 平台的開發工具套件,其目的是提供一個在 Windows 上使用類 Unix 工具(如 GCC 編譯器)的環境,以便開發者能夠輕鬆地在 Windows 上進行跨平台的程式碼開發。 以下是 MinGW 的主要特點和組成部分:

  • Minimalist GNU for Windows: MinGW 是「Minimalist GNU for Windows」的縮寫,它提供了一個最小化、輕量級的 GNU 工具集合,主要包括 GCC 編譯器、GNU Binutils 工具、以及相關的庫和頭文件。
  • GCC 編譯器: MinGW 的核心是 GCC(GNU Compiler Collection),它是一個強大的開源編譯器,支援多種程式語言,包括 C、C++、Fortran 等。在 MinGW 中,GCC 主要用於將源代碼編譯成可執行文件。
  • GNU Binutils: 這是一個包含了各種二進位工具的軟體包,包括連接器(ld)、目標轉換器(objcopy)、反彙編工具(objdump)等。這些工具協助在編譯和連接過程中處理二進位文件。
  • MSYS(Minimal SYStem): MinGW 通常與 MSYS 搭配使用,這是一個提供類 Unix 環境的工具,包括一個 Bash shell 和一些基本的 Unix 工具,使得在 Windows 上進行類 Unix 開發更加方便。
  • 簡單安裝: MinGW 的安裝相對簡單,開發者可以通過下載安裝管理器進行工具的安裝和更新。這使得在 Windows 上建立開發環境變得容易。
  • 支援跨平台開發: 使用 MinGW,開發者可以在 Windows 上開發跨平台的應用程式,而無需依賴於 Microsoft Visual Studio 的編譯器。Minimalist GNU for Windows: MinGW 是「Minimalist GNU for Windows」的縮寫,它提供了一個最小化、輕量級的 GNU 工具集合,主要包括 GCC 編譯器、GNU Binutils 工具、以及相關的庫和頭文件。

設定開發環境

在開始之前,我們需要確保Windows上安裝了適當的交叉編譯工具鏈。這包括編譯器、連結器和其他相關工具。我們可以依照需求安裝Cygwin、MinGW或其他工具,以便支援aarch64的交叉編譯。

安裝完工具後,設定環境變數是確保系統能夠找到這些工具的關鍵步驟。在Windows環境中,這可能包括修改系統的PATH變數以包含交叉編譯工具的路徑。這確保了在命令提示字元或其他開發環境中能夠正確調用這些工具。

撰寫和編譯程式碼

在這一部分,我們將進一步探討如何設定CMake和編譯程式碼的步驟,以實現從Windows到aarch64的跨平台編譯。

建立 CMakeLists.txt

首先讓我們來看一下CMakeLists.txt文件的內容。這個文件是使用CMake進行專案管理的配置文件。在這裡我們設定了交叉編譯所需的參數。

# CMakeLists.txt
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc-7.5.0.exe")
set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++.exe")

project(hello_world)

add_executable(main main.cpp)

這個CMakeLists.txt文件告訴CMake使用aarch64-linux-gnu-gcc-7.5.0.exeaarch64-linux-gnu-g++.exe作為交叉編譯工具,並建立一個名為main的可執行檔案。

建立 main.cpp

接下來我們來看一下main.cpp文件的內容。這是一個簡單的C++應用程式,只是輸出一個 “hello world” 的訊息。

// main.cpp
#include <iostream>

int main(){
  std::cout <<  "hello word" << std::endl;
}

接著我們可以直接在編譯器(ex: VSCode)點選 Build 按鈕,VSCode 會自動偵測 CMakeLists 內容並編譯執行檔。

又或者可以輸入以下指令手動觸發 cmake。第一條指令是配置項目,CMake將根據CMakeLists.txt文件和項目的結構生成構建系統所需的文件。第二條指令是根據前一步的配置訊息,使用構建系統(make)進行實際的項目構建。

# 配置項目
cmake -S . -B build -G "MinGW Makefiles"
# 建構項目
cmake --build build

如果不想用 cmake 編譯可以直接使用 aarch64-linux-gnu-g++ 編譯執行檔。

aarch64-linux-gnu-g++ -o main .\main.cpp
鼓勵持續創作,支持化讚為賞!透過下方的 Like 拍手👏,讓創作者獲得額外收入~
版主10在2020年首次開設YouTube頻道,嘗試拍攝程式教學。想要了解更多的朋友歡迎關注我的頻道,您的訂閱就是最大的支持~如果想學其他什麼內容也歡迎許願XD
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A

Search

    Table of Contents