1. 程式人生 > >makefile:make -C M=引數的使用

makefile:make -C M=引數的使用

http://blog.sina.com.cn/s/blog_89fa41ef0100trjr.html

Makefile為,

PWD = $(shell pwd)
KERNEL_SRC = /usr/src/linux-source-2.6.15/
 
obj-m := test.o
module-objs := test.o
 
all:
       $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
      
clean:
       rm *.ko
       rm *.o
在test.c和Makefile所在的目錄下執行make,如果看到類似輸出
make -C /usr/src/linux-source-2.6.15/ M=/home/vmeth modules
make[1]: Entering directory `/usr/src/linux-source-2.6.15'
  CC [M]  /home/vmeth/hello.o
  Building modules, stage 2.
  MODPOST
  CC      /home/vmeth/hello.mod.o
  LD [M]  /home/vmeth/hello.ko
make[1]: Leaving directory `/usr/src/linux-source-2.6.15'
 
一般用下面的Makefile,
# Makefile2.6
ifneq ($(KERNELRELEASE),)
#kbuild syntax. dependency relationshsip of files and target modules are listed here.
mymodule-objs := hello.o
obj-m := hello.o  
else
PWD  := $(shell pwd)
KVER ?= $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
       $(MAKE) -C $(KDIR) M=$(PWD)
clean:
       rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif
KERNELRELEASE 是在核心原始碼的頂層Makefile中定義的一個變數,在第一次讀取執行此Makefile時,KERNELRELEASE沒有被定


義,所以make將讀取執行else之後的內容。
當make的目標為all時,-C $(KDIR) 指明跳轉到核心原始碼目錄下讀取那裡的Makefile;M=$(PWD) 表明然後返回到當前目錄繼


續讀入、執行當前的Makefile。
當從核心原始碼目錄返回時,KERNELRELEASE已被被定義,kbuild也被啟動去解析kbuild語法的語句,make將繼續讀取else之前


的內容。else之前的內容為kbuild語法的語句, 指明模組原始碼中各檔案的依賴關係,以及要生成的目標模組名。
每個核心的名字都包含了它的版本號,這也是 uname -r 命令顯示的值。

相關推薦

makefilemake -C M=引數的使用

http://blog.sina.com.cn/s/blog_89fa41ef0100trjr.html Makefile為, PWD = $(shell pwd) KERNEL_SRC = /usr/src/linux-source-2.6.15/   obj-m :=

linux驅動編譯時make -C M= 解釋

Makefile為 PWD = $(shell pwd) KERNEL_SRC =/usr/src/linux-3.0/ obj-m :=test.o module-objs : =test.o all:               $(MAKE)   -C  $(KER

Makefile中的-CM=解析

轉自:https://www.aliyun.com/jiaocheng/144874.html 摘要:在進行嵌入式開發過程中,經常需要編寫和執行Makefile,且在大型專案開發過程中,一般也都是使用Makefile來進行管理、編譯、執行的,所以對Makefile的讀寫是嵌入式軟體工程師必

15、【C++】C++11新特性Lamda表示式/可變引數模板

一、Lamda表示式     Lamda表示式是C++11中引入的一項新技術,利用Lamda表示式可以編寫內嵌的匿名函式,用以替換獨立函式或者函式物件,並且使得程式碼更可讀。是一種匿名函式,即沒有函式名的函式;Lamda函式的語法定義如下: [capture] :捕捉

Java類的組合與繼承 小問題分析(建構函式引數的傳遞方法 、資料隱藏的處理 對比C++)

一、類的組合:     1、初始化問題(建構函式的引數傳遞方法):       在C++中,通常只要物件中不含有指標類資料的話,物件與物件之間是可以相互賦值且不會出錯的,因此組合出來的類完全可以將傳遞過來的物件引數直接賦值給對應資料成員;       而在java中,物

[python]自問自答python -m引數? ( python3.7 版本 )

最近在看Python程式碼的時候看到了一種形式, 即  python -m    這種形式,   查了一些部落格,發現了一篇寫的還不錯,轉載了過來,不過那裡面寫的是Python2.7的環境和python3還是有些區別的,下面給出Python2.7形式

C++併發實戰3向thread傳遞引數

         在建立thread object時可以向執行緒傳遞引數,預設情況下,引數會被拷貝到執行緒空間以供執行緒執行時存取,即使引數是引用也是這樣。 情形1: void f(int i,std::string const& s); boos

C語言使用命令列引數用字串讀取流和輸出流進行文字檔案的複製

#include<stdio.h> int main(int argc,char *argv[]) {   //檢查使用者的引數是否正確   if(argc<3)   {     printf("用法:命令 原始檔名 目標檔名\n");     return -1;

C# 委託的應用1將方法作為引數傳遞給另一個方法

     長期以來,c和c++的程式設計師利用方法指標,將方法作為引數傳給另一個方法。c#使用委託來提供相同的功能,它將方法作為物件封裝起來,允許在執行時間接地繫結一個方法呼叫。      下面將通過氣泡排序的例子講解委託的產生     示例1 :該方法對一個整數陣列執行升

c++ 的引數解析方法 getopt

C++ 中自帶了一個引數解析方法: getopt(int argc, char *const *argv, const char *shortopts),用於處理向main函式傳入的資料 表頭檔案 #include<unistd.h> 函式的幾個引數分別代表著:

[makefile] 命令列給make直譯器傳引數

例如: build: [tab] mvn clean package 原本是這樣既可以跑 UT又可以打不jar 包來,但後來UT總是不過。怎麼避免對檔案的修改呢? 本著這樣目的,修改如下: 1 maven.test.skip = false 2 build: 3

從頭開始寫專案Makefile(十)make內嵌函式及make命令顯示

   【版權宣告:轉載請保留出處:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】     這一節我們講一下make的函式,在之前的章節已經講到了幾個函式:wildcard、patsubst、notdir、shell

C++函式傳參引用和const引數

一  在函式傳參中使用引用 1.使用例子: #include<iostream> using namespace std; void reset(int &i){//引用傳參

Makefile新手向教程跟著+c同學step by step寫makefile

前言 最近在寫底層C程式碼需要用到makefile來簡化編譯流程並優化檔案目錄結構,一直沒找到很好的makefile教程(一個通俗易懂的漸進式的教程),通過+c同學終於是找到了他在之前在學校實訓的時候寫的一篇文章,由於網站只能通過校內網查閱,在此決定分享一下,

C語言實現獲取ifconfig相關引數

        總結一下,今天學習的關於通過socket,ioctl來獲得ip,netmask等資訊,其中很多內容參照了很多網上的資訊,我會一一列出的         我用的這個函式,就是下面這個函式,其中的有一些全域性變數,很好懂,也就不多做解釋了 一、下面對這個函式進行

/bin/bash^M: bad interpreter: No such file or directory

nbsp unix bash 執行 bin vim dir file 文本 執行一個腳本full_build.sh 時, 一直是提示我: -bash: ./full_build.sh: /bin/bash^M: bad interpreter: No such file o

VSTO使用C#開發Excel、Word【1】

windows ipp 加權 result 項目 進行 設計工程師 too 軟件 《Visual Studio Tools for Office: Using C# with Excel, Word, Outlook, and InfoPath 》——By Eric Car

VSTO使用C#開發Excel、Word【3】

定義 應用程序 導致 編程 生活 成功 員工 無法使用 我們 前言在2002年,Visual Studio .NET和.NET Framework的第一個版本即將完成。我們中的幾個意識到微軟的.NET將會錯過Office,除非我們做了一些事情。 以前曾經是Visual Ba

VSTO使用C#開發Excel、Word【4】

托管 nic tools sha 為我 exc cart man 還要 致謝雖然封面上只有兩個名字,但沒有這麽多專門人士的努力,沒有這樣大的書籍。 埃裏克·卡特(Eric Carter)感謝他的整個家庭,他們表現出的耐心,而“爸爸”正在研究他的書:傑森,海利,卡米拉,蘭德和

VSTO使用C#開發Excel、Word【6】

exc 和集 handle helper class a 一切都 mic 必須 ges Office主互操作程序集(PIA)在了解如何構建Office解決方案之前,您需要更詳細地了解在.NET中與Office對象模型通信的托管程序集。用於與Office通話的托管程序集稱為O