1. 程式人生 > >linux多檔案編譯—makefile

linux多檔案編譯—makefile

說到linux下多檔案編譯。大多是c語言,因為linux核心以及許多的自由軟體都是c語言編寫的。當然還有c++語言,區別就是c語言使用gcc,而c++語言使用g++。那麼本文以c語言為例講解。c++那麼就能融匯貫通了將gcc改為g++就好了。

1,單個檔案的編譯,比如有test.c    直接輸入命令

#gcc test.c -o test

執行,直接輸入

#./test


2,多個檔案的編譯,比如有main.c  address.h address.c 這三個檔案,那麼我們使用makefile多檔案編譯的方法是很方便的,如下

step1建立makefile檔案

#gedit makefile&


step2編輯makefile檔案,在makefiel檔案中寫入以下
mm:main.o address.o
       gcc main.o address.o -o mm
main.o:main.c address.c
       gcc main.c -c
address.o:address.c
       gcc address.c -c
clean:
       rm -fR *.o mm

對上邊的程式碼做一個解釋:

mm是我們生成的名字,這個不用管,就寫mm就好了,後邊也用不到。

第一行的意思是mm是由main.o address.o生成的

第二行的意思是mm是由main.o address.o通過gcc -o生成的。

注意gcc的前面是一個tab鍵!!

第三行的意思是main.o是由main.c address.c生成的

第四行的意思是main.o是由main.c address.c通過gcc -c生成的。注意gcc的前面是一個tab鍵!!
第五行第六行不解釋了,都一個意思。

第七行第八行,是執行make clean後需要執行的程式碼,在該處的意思是刪除所有.o結尾的檔案和mm檔案。其中第八行的格式再強調一下,(首先是一個tab鍵,然後rm,然後空格,然後*,然後.,然後o),,看清楚是小寫字母o別寫錯了。

step3使用make命令編譯

#make -f makefile

step4如果你寫的原始碼有錯誤,此時會報錯。那麼修改原始碼後,再次執行step3。直至通過

step5執行程式

#./makefile



完!

相關推薦

linux檔案編譯makefile

說到linux下多檔案編譯。大多是c語言,因為linux核心以及許多的自由軟體都是c語言編寫的。當然還有c++語言,區別就是c語言使用gcc,而c++語言使用g++。那麼本文以c語言為例講解。c++

g++檔案編譯和簡單MakeFile檔案寫法

上文(g++基本用法)介紹簡單的g++編譯器的用法,只是針對沒有依賴關係的單個檔案的操作,當我們有多個檔案需要編譯的時候,是如何工作的呢?下面以簡單的例項進行介紹,然後把例項以MakeFile檔案實現,並對MakeFile檔案進行簡單介紹。      準備工作,下面是需要的簡單例項檔案及程式碼:   mai

Linux C 檔案編譯

多檔案編譯 將工程目錄下的每個原始檔都編譯(通過編譯器)成對應的目標檔案(Linux平臺下為.o檔案,是二進位制的,但無法執行) ,然後將所有的目標檔案和庫檔案連結在一起(通過連結器)構成最終的可執行

檔案編譯makefile編寫(附當前目錄下所有.c/.cpp檔案編譯makefile)

C程式碼是如何變成可以執行程式的過程:     1、由前處理器把程式設計師所編寫的C程式碼翻譯成標準C程式碼,可以得到以.i結尾的預處理檔案。         gcc -E code.c         gcc -E code.c -o code.i      2、由彙編器

vs code 配置.json檔案引入makefile檔案實現檔案編譯

開發十年,就只剩下這套架構體系了! >>>   

Linux檔案批量替換內容

sed -i "s/原字串/新字串/g" `grep 原字串 -rl 所在目錄` # 將'/usr/local/cwz'目錄下的所有檔案中包含'11.23.456.78'字串的替換為'cc.cv.bb' sed -i "s/11.23.456.78/cc.cv.bb/g" `gre

C/C++檔案編譯原理

在單檔案的情況下(只有一個.h和.c/.cpp)我們只需編譯該檔案即可,例如: $ gcc main.c -o main 但更多的情況下,一個工程需要分開為多個原始檔,比如 main.c、a.

linux檔案壓縮一個檔案成tar.gz的命令

雖然gzip和bzip2也可以針對目錄進行解壓縮,但是它們是分別對目錄裡面的檔案或者目錄進行解壓縮。所以在最好會產生很多壓縮檔案。這是非常頭痛的事情。 前段時間遷移資料庫檔案。a伺服器裡面我備份的sql檔案有750g之後想通過scp 複製到別的伺服器上去。到時不知道是由於

C++模板類(函式)編譯 檔案編譯

在C++中,模版和普通的函式或類有很多不一樣的性質。前兩天寫了一個模版類,標頭檔案和實現檔案分開存放的。這就出問題了,老是說找不到實現。查了一些資料才知道,原因是這樣的,編譯器在例項化一個類時,需要知道該類的所有確定的資訊,如果是普通的類這是完全由標頭檔案(.h)中類的宣告

g++檔案編譯

標頭檔案:A.h void test(); 原始檔:A.cpp #include <iostream> #include<thread> #include<chr

Linux環境下使用VSCode編譯makefile檔案的注意事項

Linux環境下使用VSCode編譯makefile檔案的注意事項 首先安裝C/C++的兩個依賴   在debug,launch會自動的生成下方的launch.json     launch.json { // Use IntelliSense to l

從入門到製作編譯目錄檔案makefile

makefile作用:用於管理編譯檔案。通常編譯linux專案時,有長達幾千個檔案,在某次更改其中一個檔案的話,若要將整個工程全部編譯,太繁瑣耗時。引入makefile,它依據檔案更新的時間,從而只編譯改動過的檔案。 1 makefile名詞解釋: 目標:指編譯後生成檔案

linux環境下檔案編譯

1.在編寫C程式時,使用UTF-8格式。 od -tc test.c winhex,可以開啟檔案儲存方式。 2.編寫H檔案時,需要有#endif error: unterminated #ifndef:https://blog.csdn.net/lele2426/article/deta

Linux檔案編譯

先看一個簡單的多檔案 test.h #include <stdio.h> add.c #include"tast.h" int add(int a,int b) { return a+b; } main.c #inlc

Linux下如何編譯檔案(包括不同目錄下的.c/.h檔案)的C/C++程式

在Linux下要編譯一個C/C++程式,首先要知道包含目錄的作用,對C/C++有了解的就會知道,#include是包含標頭檔案所用的,也就說說部分類、函式、或者變數宣告就在其中。而#include巨集定義又有兩種: #include""和#include <>

linux驅動模組(檔案)的makefile實現

方式1常用於編寫,除錯階段。驅動原始碼的資料夾位置獨立自由,只要在中指定好Linux核心原始碼的路徑。 方式2常用於最後整合階段,在除錯基本完成後,可以將驅動原始碼檔案(夾)放置在Linux核心原始碼的driver/xxx/的相應路徑中,修改本層和上層的Makefile

linux環境下c++的編寫、除錯以及makefile檔案連編需要注意的問題

最近剛開始接觸Linux C++,發現其與windows C++有太大的差別。這裡是自己的一些總結,如果有新人看到,希望能夠幫到您。 1、gcc編譯器簡介 生成一個.out需要將原始檔依次進行預處理、

[linux]一個通用驅動Makefile-V2-支援編譯目錄

[toc] --- ## 前言 該 Makefile 已經通過基於核心 **Linux5.4** 版本驗證通過。 因為編寫這通用驅動 Makefile 時遇到了標頭檔案指定路徑失敗的問題。使用過 **ccflags-y 、INCDIR 、EXTRA_CFLAGS 、-L** 等等引數都無效。就是因為我使

Linux 內核模塊編譯 Makefile

pat 新的 存放位置 例如 root group level ubunt 而是 驅動編譯分為靜態編譯和動態編譯;靜態編譯即為將驅動直接編譯進內核,動態編譯即為將驅動編譯成模塊。 而動態編譯又分為兩種: a -- 內部編譯 在內核源碼目錄內編譯 b -- 外部

makefile平臺編譯以及makefile自動化編譯總結

Date: 2018.9.30 1、前言     同一套庫程式碼往往需要在不同體系架構或系統上的機器和裝置上編譯和執行,這就需要我們熟悉不同平臺上的編譯方法以及測試方法,本文旨在講述多平臺編譯方法以及makefile自動化編譯的總結。 2、多平臺編譯之Windows平臺