“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中使用Vim和GCC編譯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