用C++語言做Linux開發工具之粘合劑Makefile

1.makefile的作用

來源:http://os.51cto.com/art/201005/202614.html

我想通過“粘合劑”這個詞來表達將多個工具粘合起來的“膠水”。例如,通過shell腳本,我們可以把OS命令,sed指令,awk指令,其它腳本文件等串聯起來,發揮它們的合力。在linux C++編程中,我們不可避免地會使用用C++語言做Linux開發工具粘合劑makefile文件。通過,它我們可以把編譯指令,生成文檔操作,清除操作等等串聯起來。從某種意義上來看,它也相當於一個粘合劑。

用C++語言做Linux開發工具粘合劑Makefile的出發點是,維護好一個項目中衆多文件的依賴關係,由此得到一個源程序的拓撲圖。當我們只修改圖中某個結點時,重新編譯時就只需要將拓撲圖中關聯的鏈路進行編譯就好了。由此,大大縮短了編譯的時間。make有兩大概念:dependencies和rules。規則rule即針對每一個依賴關係 dependency定義一個操作規則。這個細粒度的分離,就可以使我們可以定製軟件構建的行爲。例如,修改使用的編譯器,修改includepath, 修改libpath, 修改編譯選項等等。我們常見的VC中的nmake,功能和make是類似的。

make使用的重點和難點是編寫用用C++語言做Linux開發工具粘合劑Makefile文件。Makefile的語法相對其它語言來說是很不一樣的,我們要特別注意TAB鍵和空格鍵的區別。有很多工具可以用來幫助我們生成Makefile。最出名的就是GNU的autoconf了。一個GNU程序的編寫,需要autoscan, aclocal, autoconf, automake這四個工具。

我們知道GNU軟件安裝的三步曲是:./configure, make, make install。其中./configure就是根據autoconf, alocal等工具生成一個makefile文件。make指令就是調用make指令來根據makefile文件的規則來編譯源程序。而make install就是執行makefile中的install規則指出的操作(一般是copy操作)。而make clean就是執行makefile中的clean規則指出的操作(一般是rm操作)。我們用Eclispe+CDT開發Managed C++ Project時,它就是通過objects.mk,subdir.mk,sources.mk三個文件來生成Makefile。我們注意觀察編譯時的輸出信息,就可以看到顯示的Makefile文件的內容。

可以說,如果想編譯出跨平臺的C++程序,那麼用C++語言做Linux開發工具Makefile是一種最方便的機制。

OCI公司爲Douglas C.Schmidt的ACE,TAO開源社區編寫了一段偉大的perl腳本--MPC。它由平臺信息,一個規則文件,源代碼,生成用戶想要的工程文件,例如Make, Nmake, Visual C++ 6, Visual C++ 7等等。Google Web Tookit, Celtix做的事情與之類似,不過它們是針對JAVA的,而MPC是針對C++的。

 

2.linux的的一個引用程序

來源:http://hi.baidu.com/allen_zhongyu/item/87a597f5df7ffab430c1992d

linux c++ 例子

sudo apt-get install build-essential

該命令執行後,從源文件安裝軟件所需的工具,如gcc、make、g++及其他所需軟件就安裝好了。

在文本編輯器中寫第一個C++程序

#include <iostream> //這裏不要寫成<iostream.h>不然會冒出一個warning的
using namespace std;
int main() //‘::main’ 必須返回 ‘int’ 如果你想寫void main的話會報error的
{
cout << "Hello world!" << endl;
return 0;
}
保存爲 hellolinux.cc C++的文件格式 .cpp好像也可以
然後 (C++)調用G++ 不是(C)GCC
命令如下:
g++ hellolinux.cc -o hello //-o 參數是代表輸出
運行:
./hello
就會輸出:
Hello world!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章