日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式杂谈之makefile补充

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式杂谈之makefile补充 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我看了下自己的文章庫存,好像還沒有一篇關于Makefile的文章,所以這篇剛好可以彌補自己的缺失。


makefile預定義變量

預定義變量即系統自帶的變量

預定義變量作用
AR庫文件維護程序的名稱,默認為ar
AS匯編程序的名稱,默認為as
CCc編譯器的名稱,默認為cc
CXXc++編譯器的名稱,默認為g++
ARFLAGS庫文件維護程序選項,無默認值
ASFLAGS匯編程序選項,無默認值
CFLAGSc編譯器選項,無默認值
CXXFLAGSc++編譯器選項,無默認值

makefile自動變量

自動變量作用
$*不包含擴展名的目標文件名稱
$<第一個依賴文件名稱
$?所有時間戳比目標文件晚的依賴文件
$@目標文件的完整名稱
$^所有不重復的依賴文件

最下面兩個常用

makefile隱式規則

自動尋找.o文件對應的同名.c文件

不用指定生成.o文件的規則

相當于指定.o文件以后,會自動將同名.c文件進行編譯

這在uboot以及linux kernel中是非常常見的

在uboot以及linux kernel中經常出現include ···config.mk

這也相當于包含一個子makefile,雖然文件名不像,但可以把它當作一個makefile文件來看待,二者基本沒有區別

引用其他makefile及makefile嵌套

包含:

include makefile文件名

相當于子makefile文件直接展開

嵌套:

subsystem:

cd subdir && $(MAKE)

等價于:

subsystem:

$(MAKE) -C subdir

上面兩種寫法效果相同

makefile管理命令

命令作用
-C dir讀入指定目錄下面的makefile
-f file讀入當前目錄下的file文件為nakefile
-i忽略所有命令執行錯誤
-I dir指定被包含的makefile所在目錄

源文件過多的編譯方案

makefile分開多文件或者分級

output文件不止一個文件解決方案

  • 多個makefile文件,互相嵌套

  • 使用偽目標 make all

  • makefile環境變量

  • 普通變量導出以后即為環境變量

  • 一般要求環境變量大寫,普通變量小寫

    使用export 變量名進行導出

  • 使用環境變量 環境變量類似于工程中所有makefile之間共享的全局變量

  • 定義一個環境變量會影響到工程中的其他makefile文件,因此小心使用

    普通變量只在當前文件起作用

  • makefile本身自帶的環境變量 例如上面提到的預定義變量

  • 執行make命令的傳參操作也相當于傳入了一個環境變量(優先級最高,可以覆蓋原來makefile文件中定義的變量值)

    makefile通配符

    符號作用
    *若干個任意字符
    一個任意字符
    []將中括號中字符依次進行匹配,不加空格

    %表示任意字符,與*相似,但%一般只用于規則描述中,所以又稱為規則通配符

    ===========

    ??

    PS:想加入技術群的同學,加了我好友后,就給我發「籃球的大肚子」這句話,有可能機器人打瞌睡,可以多發幾次,不要發與技術無關的消息或者推廣。

    如果想獲取學習資料,就在公眾號后臺回復「1024」,足夠多的學習資料可以讓你學習。

    總結

    以上是生活随笔為你收集整理的嵌入式杂谈之makefile补充的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。