Linux學習筆記 對Makefile的初步優化

2021-08-25 12:04:14 字數 3365 閱讀 4810

原檔案如下:

這裡的makefile原始碼如下:

helloworld: main.o first.o second.o

g++ main.o first.o second.o -o helloworld

main.o: first.h second.h main.cpp

g++ -c main.cpp -o main.o

first.o: first.h first.cpp

g++ -c first.cpp -o first.o

second.o: second.cpp second.h

g++ -c second.cpp -o second.o

clean:

rm -rf *.o

用g++去跑下看看!

本博文的任務是對這個makefile進行簡單的優化!

對程式名稱進行優化!

makefile**如下:

exe=nimei

$(exe): main.o first.o second.o

g++ main.o first.o second.o -o $(exe)

main.o: first.h second.h main.cpp

g++ -c main.cpp -o main.o

first.o: first.h first.cpp

g++ -c first.cpp -o first.o

second.o: second.cpp second.h

g++ -c second.cpp -o second.o

clean:

rm -rf *.o $(exe)

用g++跑下,程式執行截圖如下:

使用下clean這個makefile命令!

linux命令與現象都如下圖:

如果有多個.cpp,要生成.o檔案,makefile也提供了優化,makefile原始碼如下:

exe=nimei

$(exe): main.o first.o second.o

g++ main.o first.o second.o -o $(exe)

main.o: first.h second.h main.cpp

g++ -c main.cpp -o main.o

%o: %.cpp

g++ -c $< -o $@

clean:

rm -rf *.o $(exe)

這裡只給出了.cpp的依賴項,並沒有給出.h的。(後期博文會給出)

程式執行截圖如下:

下面給出兩個函式功能:

1.使用萬用字元找當前檔案所有.cpp檔案,原始碼如下:

exe=nimei

find_cpp=$(wildcard *.cpp)

$(exe): main.o first.o second.o

g++ main.o first.o second.o -o $(exe)

main.o: first.h second.h main.cpp

g++ -c main.cpp -o main.o

%o: %.cpp

g++ -c $< -o $@

clean:

rm -rf *.o $(exe)

test1:

@echo $(find_cpp)

執行截圖如下:

2.把當前資料夾裡面的.cpp檔案找出來,構造.o檔名(其實就是把***.cpp中的***提取出來,再後面接乙個.o)

makefile原始碼如下:

exe=nimei

find_cpp=$(wildcard *.cpp)

find_cpptoo=$(patsubst %.cpp, %.o, $(find_cpp))

$(exe): main.o first.o second.o

g++ main.o first.o second.o -o $(exe)

main.o: first.h second.h main.cpp

g++ -c main.cpp -o main.o

%o: %.cpp

g++ -c $< -o $@

clean:

rm -rf *.o $(exe)

test1:

@echo $(find_cpp)

test2:

@echo $(find_cpptoo)

程式執行截圖如下:

再次把makefile進行優化,原始碼如下:

exe=nimei

find_cpp=$(wildcard *.cpp)

find_cpptoo=$(patsubst %.cpp, %.o, $(find_cpp))

$(exe): $(find_cpptoo)

g++ $(find_cpptoo) -o $(exe)

main.o: first.h second.h main.cpp

g++ -c main.cpp -o main.o

%o: %.cpp

g++ -c $< -o $@

clean:

rm -rf *.o $(exe)

test1:

@echo $(find_cpp)

test2:

@echo $(find_cpptoo)

程式執行截圖如下:

Linux裝置驅動初探 多原始檔Makefile

首先介紹一下 init這個標誌在驅動原始檔中的作用吧。核心中帶 的函式 核心api函式具有這種名稱的,通常都是一些介面的底層函式,應該謹慎使用。實質上,這裡的雙下劃線就是要告訴程式設計師 謹慎呼叫,否則後果自負。以 init為例,init表明該函式僅在初始化期間使用。在模組被裝載之後,模組裝載器就會...

Linux中的命令 make f 是什麼意思

linux下makefile教程 一 linux下makefile教程 二 linux下makefile教程 三 二 makefile的檔名 預設的情況下,make命令會在當前目錄下按順序找尋檔名為 gnumakefile makef ile makefile 的檔案,找到了解釋這個檔案。在這三個檔...

對MySQL的學習筆記

1.mysql 是最流行的關係型資料庫管理系統,在 web 應用方面 mysql 是最好的 rdbms relational database management system 關聯式資料庫管理系統 應用軟體之一。2.資料庫 database 是按照資料結構來組織 儲存和管理資料的倉庫。3.資料以...