1. 程式人生 > >“vim+make+GCC”編譯C++簡單例項

“vim+make+GCC”編譯C++簡單例項

一、主線步驟為三步:

1、用vim編寫程式原始檔

2、用vim編寫makefile命令檔案

3、在終端裡輸入make命令

二、例項檔案有:head.h、head.cc、main.cc    

head.h         //宣告head.cc裡的helloworld()函式

head.cc       //定義helloworld()函式

main.cc    //主函式

三、makefile寫法

四、命令列執行make

makefile最簡單的寫法是:定義依賴關係+編譯命令

留意例子裡,每兩行一組,前一行是定義依賴關係,後一行是編譯命令。

main.o:main.cc head.h   //定義依賴關係

g++ -c main.cc              //編譯命令

定義依賴關係的格式:【目標檔案】: 【原始檔1】 【原始檔2】 ....

不懂?別急,先來聽聽makefile的原理:

makefile的原理是根據依賴關係,若某個原始檔修改時間比生成的目標檔案晚或者目標檔案不存在時,則代表目標檔案需要編譯,就會執行依賴關係下面的編譯命令。

例如:當我們修改了main.cc,而其他沒變。那麼執行make命令時,會根據定義的依賴關係,找到main.o:main.cc head.h (因為main.cc剛修改了),從而執行跟著的 g++ -c main.cc 命令,生成main.o。

這時因為main.o也剛修改了,所以會根據依賴關係:filename:head.o main.o  從而執行跟著的g++ -o filename main.o head。

結果是隻更新了需要更新的檔案。有趣吧~

如圖:

相關推薦

vim+make+GCC編譯C++簡單例項

一、主線步驟為三步: 1、用vim編寫程式原始檔 2、用vim編寫makefile命令檔案 3、在終端裡輸入make命令 二、例項檔案有:head.h、head.cc、main.cc     head.h         //宣告head.cc裡的helloworld(

Macbook中使用VimGCC編譯C程式

Macbook中使用Vim和GCC編譯C程式 MAC中使用Vim和GCC編譯C程式 Vim及GCC指令 MAC中使用Vim和GCC編譯C程式 開啟終端(Terminal); 輸入以下命令進入Vim編輯器,同時

gcc編譯c入門

目錄 .net def 函數 庫函數 detail 安排 lan tar 1、在當前目錄下新建c文件 $:vim hello.c 2、按i進入編輯模式。按esc退出編輯模式,輸入源代碼 #include <stdio.h> int main(void) { pr

GCC編譯C源代碼的四個步驟

二進制文件 存在 鏈接 四個步驟 pre 參數 -o 包含 利用 GCC編譯C源代碼有四個步驟:預處理---->編譯---->匯編---->鏈接。 可以利用GCC的參數來控制執行的過程,這樣就可以更深入的了解編譯C程序的過程。 下面將通過對一個程序的編譯來

gcc編譯c語言,非Makefile形式

gcc (選項) (引數) 選項: -o:指定生成的輸出檔案; -E:僅執行編譯預處理; -S:將C程式碼轉換為彙編程式碼; -wall:顯示警告資訊; -c:僅執行編譯操作,不進行連線操作。 引數:需要編譯的檔案 其中選項和引數位置可調換   主函式所在檔案inc

Linux程式設計時使用gcc編譯.c出現以下問題warning: the `gets' function is dangerous and should not be used.

Linux程式設計時使用gcc編譯.c出現以下問題 [[email protected] final1]# gcc -pthread client.c /tmp/ccSuK4v5.o: In function `writedata': client.c:(.text+0xb2a): w

Linux程式設計時使用gcc編譯.c出現以下問題,pthread.c:(.text+0x29): undefined reference to `pthread_create'collect2: err

Linux程式設計時使用gcc編譯.c出現以下問題 client.c:(.text+0x13e): undefined reference to `pthread_create' collect2: ld 返回 1   解決方法如下: 只需在用gcc編譯時加上-pthread選項即

linux下gcc編譯 .c檔案生成動態連結庫 .so檔案,並測試呼叫該連結庫

簡單介紹:linux中so檔案為共享庫,和windows下dll相似;so可以共多個程序呼叫,不同程序呼叫同一個so檔案,所使用so檔案不同;so原檔案不需要main函式;例項,1.通過mysqlTest.c中的函式mysql(),生成一個libmysql.so連結庫#inc

mingw下用gcc編譯c檔案出現no such file or directory解決方法

c檔案直接拖進cmd時地址是對的,但gcc不認空格,所以要把路徑當做所有空格都去掉或改成“—”,這樣它就能直接發現檔案了,這時在cmd中編寫:gcc F:\new.c -o F:\new.exe   ,就會出現new.e

gcc編譯c++程式(轉載)

單個原始檔生成可執行程式 下面是一個儲存在檔案 helloworld.cpp 中一個簡單的 C++ 程式的程式碼:  /* helloworld.cpp */ #include <iostream> int main(int argc,char *argv[]) {

linux下用gcc編譯c程式時遇到的問題: error: stdio.h: 沒有那個檔案或目錄

原因是沒有安裝libc6-dev的軟體包。命令列下輸入apt-get install build-essential即可。這個build-essential是幹什麼的呢?原來build-essential是一個列表,包含了編譯debian包必需的大部分元件。安裝完之後,順利解

c++ 簡單例項羅列 金字塔效果(for迴圈和while迴圈)

一:簡單輸出 #include<stdio.h> int main() { int i; for(i=1;i<=5;i++) { printf("*"); } } #include<stdio.h> int main() { in

linux下GCC編譯C程式(一)

GCC的"-lm"選項,它告訴GCC檢視系統提供的數學庫(libm)。因為Linux和UNIX的系統函式庫通常以"lib"為字首,所以我們假設它存在。真正的函式庫位置隨系統的不同而不同,但它一般會位於目錄/lib或/usr/lib中,在這些目錄中還有數以百計的其他必需的系統函式庫。 4. 共享函式庫與靜態函

ubuntu 使用gcc 編譯 C++ 及 遇到到問題

g++ -c filename(當前路徑.cpp檔案) // 只編譯,不連結,生成.o 檔案 g++ filename(當前路徑.cpp檔案) // 既編譯,同時連結,生成可執行檔案(預設是a.out) g++ filename -o test

Linux下使用make命令編譯c原始檔

make命令是GNU的工程化編譯工具,用於編譯眾多相互關聯的原始碼問價,以實現工程化的管理,提高開發效率。make命令唯一讀取的檔案是Makefile,在較大的專案中,有些檔案沒有編譯有些編譯過,Makefile中指定一定的規則來對整個專案的所有檔案新型編譯,make命令讀取

ubuntu下 GCC編譯程式出現 undefined reference to `std::ios_base::Init::Init()'問題——gcc編譯C++程式碼

hello.o: In function `main':hello.cpp:(.text+0x41): undefined reference to `std::cin'hello.cpp:(.text+0xd1): undefined reference to `std::cout'hello.o: In

gcc編譯C++程式

動態連結庫的編寫和使用 1、動態庫*.so的編譯 這裡我們用到4個檔案,它們分別為:SoDemoTest.h、one.cpp、two.cpp、three.cpp。它們的內容如下:  SoDemoTest.h #ifndef __SO_DEMO_TEST_HEADER

windows命令列使用gcc編譯.c/.cpp檔案

大致思路:命令列下進入.c檔案所在的目錄,執行【gcc XXX(檔名).c】命令生成相應的.exe檔案,執行【XXX.exe】命令即可 ---------------------------------------------------------------------

第一次使用Ubuntu的Vim編寫C簡單gcc編譯方法

首先,開啟終端,輸入vi,啟動vi編輯器,如下圖所示: 接著,開始在本編輯器中編寫C程式碼,並且將其儲存為.c檔案,如下圖所示。 最後,你可以用命令gcc HelloLinux.c或者是gcc -Wall HelloLinux.c來編譯本C原始檔。如果原始碼

c語言模組化開發(GCC編譯例項)

c語言編譯步驟,即一個*.c檔案是如何一步步成為*.exe的? 參見:C語言真正的編譯過程 window下GCC(minGW)的安裝 參見:MinGW下載安裝 GCC常見命令: 參見:Linux GCC常用命令 本人理解的c語言編譯過程、中間檔案、常用命令 &n