我所理解的makefile檔案
在linux下程式設計時我們會用到gcc和g++編譯器,無論是gcc還是g++,在windows下ide已經封裝了所有的編譯鏈結命令,但是linux下我們必須自己編寫命令一步一步編譯和鏈結。如果我們不想這樣做的話,我們可以寫乙個makefile檔案,把編譯鏈結命令寫入,然後這個makefile檔案就想乙個批處理檔案一樣依次執行我們寫入的指令,通過makefile檔案,我們可以簡單的編譯鏈結程式,特別是有很多的.c檔案的時候,makefile就體現了其優越性。
下面就結合乙個簡單的例子來看一下makefile的編寫原理及其演變過程:
假如:當前目錄下有三個檔案,main.cpp a.cpp a.h 現在我想編譯他們
start:
g++ -o main.o –c main.cpp
g++ -o a.o –c a.cpp
clean:
rm –rf main.o a.o
儲存退出以後,在當前目錄執行:make 就完成了乙個簡單的makefile雛形。
對於以上的makefile檔案需要說明的有:makefile 以start:這樣的標號開始而且makefile檔案以tab鍵縮排,下面的的clean是為了清除中間檔案main.o和a.o。但是如何直接執行make的話,下面的clean:部分不會被執行,因為makefile檔案預設只執行第乙個標號的內容,如果要執行clean部分就要顯式地這樣呼叫:make clean.
以上的makefile只是簡單雛形,下面來修改一下。
cc=g++
start:a.o main.o
a.o:
$(cc) –o a.o –c a.cpp
main.o:
$(cc) –o main.o –c main.cpp
clean:
rm –rf a.o main.o
終極版本:
cc=g++
srcs=main.cpp\ //用變數表示原始檔
a.cpp
objs=$(srcs:.cpp=.o) //把.c檔案以.o檔案賦值
start: $(objs)
$(cc) -o $(exec) $(objs)
.cpp.o:
$(cc) -o $@ -c $<
clean:
rm -rf $(objs)
我所理解的前端
轉眼間,在鵝廠的實習已經過去三個多月,涉及到實習生轉正留用的考核流程也逐步開始了。帶著一堆疑問,以及自己實習期間的心得體會,與導師暢談了一番。他作為資深前端工程師,就前端領域及我個人未來的職業規劃等方面分享了他自己的經驗。這次與導師的溝通讓我受益匪淺,現簡單總結如下。前端知識學習路線 首先,當然是就...
我所理解的陣列
陣列 一 一維陣列 1 陣列的建立 陣列顧名思義是含有相同元素的集合,類似我們高中數學所學習的集合 例如int arr 10 char arr1 2 float arr2 3 double arr3 5 注意 切記 這個中要給常量,不能使用變數。2 陣列的初始化 初始化是指 在陣列的建立同時並賦予合...
我所理解的OpenSocial
昨天在google參加了opensocial的講座,通過三位opensocial工程師的精彩演講,我對這個東西有了一些簡單的理解。下面就把我所理解的opensocial,也算是筆記整理在這裡。1 為什麼會有opensocial?當前社會是乙個網路的社會,當前的網路是乙個社會性的網路,sns遍地開花到...