以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接[ 微信公眾號「ENG八戒」](https://mp.weixin.qq.com/s/w8YV_TUb4QwsgChu3AspHg)[https://mp.weixin.qq.com/s/w8YV\_TUb4QwsgChu3AspHg](https ...
以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 微信公眾號「ENG八戒」https://mp.weixin.qq.com/s/w8YV_TUb4QwsgChu3AspHg
Make 是什麼
Make 本來是一個在 linux 環境下用於控製程序和相關文件生成的工具。Make 工作過程需要輔以 makefile 文件指導生成過程和列出需要的原材料,比如源文件、依賴庫等。有了 makefile 文件,Make 就可以根據輸入文件的變更來更新對應的輸出程式文件,而不需要完全重新編譯輸出,提高了編譯效率。Make 通過比較目標輸出文件和輸入文件的時間來決定是否需要更新。
另外 Make 不限制源文件的編寫語言。
Make 不僅僅用於生成程式,還用於打包、安裝、卸載軟體包等。這可以避免系統維護人員瞭解不必要的細節和在繁瑣的操作中浪費時間。是的,細節都在 makefile 文件中,makefile 文件可以指定依賴包的安裝卸載先後順序,這樣使得執行過程是完全自動化的。
雖然編寫 makefile 文件是費時的,但是如果你的執行過程足夠頻繁,那麼就很值得投入時間編寫好 makefile 文件。
如果你是一枚技術狂熱者,那麼 Make 是你不可多得的工具。
問題來了,如果需要在 Windows 平臺交叉編譯適用於 Linux 的程式文件,可否也使用 Make ?
當然可以,下麵繼續看。
安裝 make
Windows 平臺並沒有自帶 make,所以需要我們自己配置環境。
配置 make 環境第一步就是下載安裝包。下載安裝的方式還有很多,比如 GnuWin32.make、Winget、Chocolatey、WSL、MinGW 等等,這裡只是介紹使用 GnuWin32.make 這種。
如果你需要瞭解其它安裝方式,可以關註本公眾號,查看該推文《在 Windows 中怎麼安裝 Make ?》有詳細介紹。
首先,網上搜索 make for windows
點擊該鏈接進入頁面,然後找到 Complete package, except sources
把安裝文件下載到本地,直接雙擊執行即會開始安裝。
安裝完成後,還需要配置一下系統變數,否則在調用 make 時系統無法找到該執行文件
詳細配置過程可參考上面的推文鏈接,這裡從略。
make 編譯
在 Windows 這個過程和 Linux 環境下一樣,需要先準備一份 Makefile 文件和其它工程文件(比如源文件)。
這裡為演示起見,這裡創建源文件 main.c
#include <stdio.h>
int main()
{
printf("hello window cross-compile for linux");
return 0;
}
然後,在工程源文件根目錄下創建 Makefile 文件(註意文件名),文件內容可以如下寫
output: main.c
gcc main.c -o output
由於生成的目標執行文件是要在 Linux 下運行的,這裡採用編譯器 gcc。同時,指定輸出文件為 output。
由於編譯是在 Windows 平臺,那麼編譯器 gcc 也需要有對應的 Windows 平臺版本。其一般由晶元原廠提供,安裝之後也需要配置系統變數以備系統調用。
最後,在 Makefile 文件所在目錄運行命令行,並輸入命令 make
>make
gcc main.c -o output
編譯結束後,拷貝生成的文件 output 到目標平臺(Linux)下運行
$ ./output
hello window cross-compile for linux
當然,makefile 其實內容可以很複雜,以後有機會的話會在公眾號後續文章繼續講解。
不過,現如今有了 CMake 可以更方便地管理工程,它會自動生成對應的 makefile 文件。我的很多文章都有介紹過 CMake,其中《一文入門Qt Quick》文內有詳細介紹。