嵌入式Linux中Makefile萬能寫法

2021-08-15 15:38:48 字數 1965 閱讀 4366

對於linux系統中使用gcc進行編譯:

# 列出當前目錄下所有*.c檔案

src :=

$(wildcard *.c)

# 將所有*.c檔案轉為*.o檔案

obj :=

$(patsubst %.c, %.o, $(src)

)# 指定編譯器

cc = gcc

# 指定鏈結器

cclink = g++

# 指定編譯屬性

cflags = -g -wall

# 指定編譯輸出的可執行程式名稱

outname := helloworld

all: $(obj)

$(cclink)

$(cflags)

$^ -o $(outname)

$(obj)

: %.o:%.c

$(cc)

$(cflags)

-c $^ -o $@

.phony:clean

clean:

rm *.o $(outname)

對於嵌入式linux使用交叉編譯器進行編譯:

src :=

$obj := $

cc = arm-linux-gcc

cclink = arm-linux-ld

cflags = -g -c -wall

all: $(obj)

$(cclink)

-wall $^ -o all.bin

$(obj)

: %.o:%.c

$(cc)

$(cflags)

$^ -o $@

.phony:clean

clean:

rm *.o all all.bin

對於linux編譯模組:

# 指定模組名稱

obj-m := helloworld.o

# 指定核心原始碼目錄

kdir := /lib/modules/$(shell uname -r)

/build

# 指定將編譯輸出到當前目錄

pwd :=

$(shell pwd

)all:

make -c $(kdir)

m=$(pwd)

modules

.phony:clean

clean:

make -c $(kdir)

m=$(pwd)

modules clean

對於嵌入式linux編譯模組:

# 指定模組名稱

obj-m := helloworld.o

# 指定編譯平台

arch := arm

# 指定交叉編譯器

cross_compile := arm-linux-

# 指定核心原始碼目錄

kdir := /opt/embeded/dts-demo/linux-4.0.1

# 指定將編譯輸出到當前目錄

pwd :=

$(shell pwd

)all:

make arch=

$(arch)

cross_compile=

$(cross_compile)

-c $(kdir)

m=$(pwd)

modules

.phony:clean

clean:

make -c $(kdir)

m=$(pwd)

modules clean

嵌入式 linux 編譯

第二次換了編譯環境編譯時又提示 make 3 drivers video console vgacon.o 錯誤 1 在網上搜尋結果 根據資訊的大概意思是關於vga的支援問題,在這裡我直接把關於vga的配置選項去掉不選,即 在執行 make menuconfig 配置時 不選vga 驅動。devic...

linux嵌入式開發

我的環境 主機 ubuntu 64位 開發板 mini2440 6 makefile檔案修改 在 opt friendlyarm mini2440 linux 2.6.29下執行 sudo vi.makefile 搜尋arm linux得到乙個結果 cross compile?arm linux 然...

嵌入式 Linux介紹

嵌入式 linux介紹 一 嵌入式是一門it技術。嵌入式這門it技術是幹什麼的?他有什麼價值?專門生產功能專一的智慧型電子產品 電子裝置 什麼是電子裝置?通電的東西,嵌入式來搞定,而且沒通電的影象化介面屬於應用層的那種,嵌入式也可以搞定。二 嵌入式開發的分類 基於系統平台的開發 做出來的產品有搭載系...