linux系統的編譯指令是「Make」。在linux系統中,make是一個非常重要的編譯命令,管理員用它透過命令列來編譯和安裝很多開源的工具,程式設計師用它來管理他們大型複雜的專案編譯問題。 make用來管理大型程式的自動編譯任務,自動決定程式某一部分需要重新編譯,並發出編譯指令。
本教學操作環境:linux7.3系統、Dell G3電腦。
Linux 下 make 指令是系統管理員和程式設計師使用的最頻繁的指令之一。管理員用它透過命令列來編譯和安裝很多開源的工具,程式設計師用它來管理他們大型複雜的專案編譯問題。本文我們將用一些實例來討論 make 指令背後的工作機制。
Make簡介
make 是 linux 系統的實用程式。它用於管理大型程式的自動編譯任務,自動決定程式某一部分需要重新編譯,並發出編譯指令。雖然,我們最常見於 C 語言程式的編譯。但是,make 不限於某一特定語言,凡是可以透過 shell 指令來執行編譯器的語言都可以使用 make 。除此之外,你甚至可以用 make 描述任何建置任務,這些任務中,檔案需要在其依賴的檔案發生變動後自動更新。
Make 如何運作的
對於不知道背後機理的人來說,make 指令像命令列參數一樣接收目標。這些目標通常存放在以 “Makefile” 來命名的特殊文件中,同時文件也包含與目標相對應的操作。更多信息,閱讀關於 Makefiles 如何工作的系列文章。
當 make 指令第一次執行時,它會掃描 Makefile 找到目標以及其依賴。如果這些依賴本身也是目標,請繼續為這些依賴掃描 Makefile 建立其依賴關係,然後編譯它們。一旦主依賴編譯之後,然後就編譯主目標(這是透過 make 指令傳入的)。
現在,假設你對某個原始檔進行了修改,你再次執行make 命令,它將只編譯與該原始檔相關的目標文件,因此,編譯最終的可執行檔節省了大量的時間。
>Make 指令實例
以下是本文所使用的測試環境:
OS —— Ubunut 13.04 Shell —— Bash 4.2.45 Application —— GNU Make 3.81
以下是工程的內容:
$ ls
anotherTest.c Makefile test.c test.h
以下是Makefile 的內容:
all: test test: test.o anotherTest.o
gcc -Wall test.o anotherTest.o -o testtest.o: test.c
gcc -c -Wall test.c
anotherTest.o: anotherTest.c
gcc -c -Wall anotherTest.c
clean:
rm -rf *.o test
現在我們來看Linux 下一些make 指令應用的實例:
#1 . 一個簡單的例子
為了編譯整個工程,你可以簡單的使用 make
或是在make 指令後帶上目標 all
。
$ make
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test
你能看到 make 指令第一次建立的依賴以及實際的目標。
如果你再查看目錄內容,裡面多了一些.o 檔案和執行檔:
$ ls
anotherTest.c anotherTest.o Makefile test test.c test.h test.o
現在,假設你對test.c 檔案做了一些修改,重新使用make 編譯工程:
$ make
gcc -c -Wall test.c
gcc -Wall test.o anotherTest.o -o test
你可以看到只有test.o 重新編譯了,然而另一個Test.o 沒有重新編譯。
現在清理所有的目標檔案和可執行檔test,你可以使用目標 clean
:
$ make clean
rm -rf *.o test$ ls
anotherTest.c Makefile test.c test.h
你可以看到所有的. o 檔案和執行檔test 都被刪除了。
2. 透過-B 選項讓所有目標總是重新建立
#到目前為止,你可能注意到make 指令不會編譯那些自從上次編譯之後就沒有更改的文件,但是,如果你想覆蓋make 這種預設的行為,你可以使用-B 選項。
下面是個例子:
$ make
make: Nothing to be done for `all’.$ make -B
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test
你可以看到儘管make 指令不會編譯任何文件,然而 make -B
會強制編譯所有的目標檔案以及最終的執行檔。
3. 使用 -d 選項列印偵錯資訊
如果你想知道 make 執行時實際做了什麼,請使用 -d 選項。
這是一個例子:
$ make -d | more
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
Reading makefiles…
Reading makefile `Makefile’…
Updating makefiles….
Considering target file `Makefile’.
Looking for an implicit rule for `Makefile’.
Trying pattern rule with stem `Makefile’.
Trying implicit prerequisite `Makefile.o’.
Trying pattern rule with stem `Makefile’.
Trying implicit prerequisite `Makefile.c’.
Trying pattern rule with stem `Makefile’.
Trying implicit prerequisite `Makefile.cc’.
Trying pattern rule with stem `Makefile’.
Trying implicit prerequisite `Makefile.C’.
Trying pattern rule with stem `Makefile’.
Trying implicit prerequisite `Makefile.cpp’.
Trying pattern rule with stem `Makefile’.
--More--
這是很長的輸出,你也看到我使用了 more
指令來一頁一頁顯示輸出。
4. 使用 -C 選項改變目錄
你可以為 make 指令提供不同的目錄路徑,在尋找 Makefile 之前會切換目錄的。
這是一個目錄,假設你就在目前目錄下:
$ ls file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt
但是你想執行的make 指令的Makefile 檔案保存在../make-dir/ 目錄下,你可以這樣做:
$ make -C ../make-dir/
make: Entering directory `/home/himanshu/practice/make-dir’
make: Nothing to be done for `all’.
make: Leaving directory `/home/himanshu/practice/make-dir
你能看到 make 命令首先切到特定的目录下,在那执行,然后再切换回来。
5. 通过 -f 选项将其它文件看作 Makefile
如果你想将重命名 Makefile 文件,比如取名为 my_makefile 或者其它的名字,我们想让 make 将它也当成 Makefile,可以使用 -f 选项。
make -f my_makefile
通过这种方法,make 命令会选择扫描 my_makefile 来代替 Makefile。
相关推荐:《Linux视频教程》
以上是linux系統的編譯指令是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux操作系統的5個核心組件是:1.內核,2.系統庫,3.系統工具,4.系統服務,5.文件系統。這些組件協同工作,確保系統的穩定和高效運行,共同構成了一個強大而靈活的操作系統。

Linux的五個核心元素是:1.內核,2.命令行界面,3.文件系統,4.包管理,5.社區與開源。這些元素共同定義了Linux的本質和功能。

Linux用戶管理和安全性可以通過以下步驟實現:1.創建用戶和組,使用命令如sudouseradd-m-gdevelopers-s/bin/bashjohn。 2.批量創建用戶和設置密碼策略,使用for循環和chpasswd命令。 3.檢查和修復常見錯誤,如家目錄和shell設置。 4.實施最佳實踐,如強密碼策略、定期審計和最小權限原則。 5.優化性能,使用sudo和調整PAM模塊配置。通過這些方法,可以有效管理用戶和提升系統安全性。

Linux文件系統和進程管理的核心操作包括文件系統的管理和進程的控制。 1)文件系統操作包括創建、刪除、複製和移動文件或目錄,使用命令如mkdir、rmdir、cp和mv。 2)進程管理涉及啟動、監控和終止進程,使用命令如./my_script.sh&、top和kill。

Shell腳本是Linux系統中用於自動化執行命令的強大工具。 1)Shell腳本通過解釋器逐行執行命令,處理變量替換和條件判斷。 2)基本用法包括備份操作,如使用tar命令備份目錄。 3)高級用法涉及使用函數和case語句管理服務。 4)調試技巧包括使用set-x開啟調試模式和set-e在命令失敗時退出。 5)性能優化建議避免子Shell,使用數組和優化循環。

Linux是一個基於Unix的多用戶、多任務操作系統,強調簡單性、模塊化和開放性。其核心功能包括:文件系統:以樹狀結構組織,支持多種文件系統如ext4、XFS、Btrfs,使用df-T查看文件系統類型。進程管理:通過ps命令查看進程,使用PID管理進程,涉及優先級設置和信號處理。網絡配置:靈活設置IP地址和管理網絡服務,使用sudoipaddradd配置IP。這些功能在實際操作中通過基本命令和高級腳本自動化得以應用,提升效率並減少錯誤。

進入Linux維護模式的方法包括:1.編輯GRUB配置文件,添加"single"或"1"參數並更新GRUB配置;2.在GRUB菜單中編輯啟動參數,添加"single"或"1"。退出維護模式只需重啟系統。通過這些步驟,你可以在需要時快速進入維護模式,並安全地退出,確保系統的穩定性和安全性。

Linux的核心組件包括內核、shell、文件系統、進程管理和內存管理。 1)內核管理系統資源,2)shell提供用戶交互界面,3)文件系統支持多種格式,4)進程管理通過fork等系統調用實現,5)內存管理使用虛擬內存技術。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具