1. 程式人生 > >工程中編寫自己的makefile---8 編寫Arm開發板的makefile

工程中編寫自己的makefile---8 編寫Arm開發板的makefile

基於以上的學習,下面編寫一個基於Hi3520D開發板的程式

工程目錄結構如下

.

├── Components

│   ├──Common

│   │   ├── xx_inc.h

│   │   ├── xx_type.h

│   ├──HAL

│   │   ├── Common

│   │   │   ├── xx_inc_hal.h

│   │   ├── Include

│   │   │   ├── xx_alarm_in.h

│   │   │   ├── xx_alarm_out.h

│   │   │   ├── xx_tm7705.h

│   │   ├── Source

│   │   │   ├── xx_alarm_in.c

│   │   │   ├── xx_alarm_out.c

│   │   │   ├── xx_tm7705.c

│   │   └── Makefile

│   ├──MCU

│   │   ├── Common

│   │   │   ├── xx_inc_mcu.h

│   │   ├── Include

│   │   │   ├── hi35xx_gpio.h

│   │   │   ├── xx_uart.h

│   │   ├── Source

│   │   │   ├── hi35xx_gpio.c

│   │   │   ├── xx_uart.c

│   │  └── Makefile

│   ├──Protocal

│   │   ├── Common

│   │   │   ├── xx_inc_ip.h

│   │   ├── Include

│   │   │   ├── gk_protocal.h

│   │   │   ├── xx_crc.h

│   │   │   ├── xx_protocal.h

│   │   ├── Source

│   │   │   ├── gk_protocal.c

│   │   │   ├── xx_crc.c

│   │   │   ├── xx_protocal.c

│   │  └── Makefile

│   ├──Services

│   │   ├── Common

│   │   │   ├── xx_inc_ip.h

│   │   ├── Include

│   │   │   ├── xx_dbug.h

│   │   │   ├── xx_inifile.h

│   │   │   ├── xx_pthread_mutex.h

│   │   │   ├── xx_socket.h

│   │   │   ├── xx_waiter.h

│   │   ├── Source

│   │   │   ├── xx_dbug.c

│   │   │   ├── xx_inifile.c

│   │   │   ├── xx_pthread_mutex.c

│   │   │   ├── xx_socket.c

│   │   │   ├── xx_waiter.c

│   │  └── Makefile

├── Project

│   ├── main.h

│   ├── main.c

│   ├── Makefile(主)

│   ├──Iot_hornet

│   │   ├── iot_intfc.h

│   │   ├── iot_main.h

│   │   ├── iot_intfc.c

│   │   ├── iot_main.c

│   │   └──Makefile

│   ├──wlan_select

│   │   ├── wlan_main.h

│   │   ├── wlan_main.c

│   │   └── Makefile

├── Object(存放所有目標檔案(.o檔案)的資料夾)


相對來說,子makefiled都是相同,

所做的工作就是把子makefile同目錄下的所有檔案下的.c原始檔全部便宜為相應的.o目標檔案,然後把所有的.o檔案cp到Object目錄下;

#$(shell ls -d */) 命令列印當前目錄下的所有資料夾

DIRS := $(shell ls -d*/) ./

FILES := $(foreachdirs, $(DIRS), $(wildcard $(dirs)*.c))

OBJS := $(patsubst%.c, %.o, $(FILES))

all:$(OBJS)$(OBJSDIR)

#$(OBJS):%.o:%.c

#       $(CC) -c $< -o [email protected] $(CFLAGS)

#依賴一個偽目標,這樣每次編譯時因為ALWAYSMAKE不存在,都會執行命令

$(OBJSDIR):ALWAYSMAKE

         cp $(OBJS) $(OBJSDIR)

.PHONY:clean

clean:

         $(RM) $(OBJS)

.PHONY:ALWAYSMAKE

ALWAYSMAKE:

export WORKDIR :=$(shell pwd)/..

export OBJSDIR :=$(WORKDIR)/Object

export LIBS :=-lpthread -lmpi -ltde -laec -ljpeg -lanr -lresampler -lVoiceEngine

export MPPLIBS :=-L/opt/Hi3520D_SDK_V1.0.5.0/mpp/lib

export CC :=arm-hisiv100nptl-linux-gcc

#標頭檔案路徑

export CFLAGS := \

-I$(WORKDIR)/Components/Common\

-I$(WORKDIR)/Components/HAL/Common\

-I$(WORKDIR)/Components/HAL/Include\

-I$(WORKDIR)/Components/MCU/Common\

-I$(WORKDIR)/Components/MCU/Include\

-I$(WORKDIR)/Components/Protocal/Common\

-I$(WORKDIR)/Components/Protocal/Include\

-I$(WORKDIR)/Components/Services/Common\

-I$(WORKDIR)/Components/Services/Include\

-I$(WORKDIR)/Project/Iot_hornet\

-I$(WORKDIR)/Project/wlan_select\

-I$(WORKDIR)/Project\

-I/opt/Hi3520D_SDK_V1.0.5.0/mpp/include\

-O0 -Wall -g3

RM := rm -f

OBJS := main.o

TARGET := xxproject

$(TARGET):$(OBJS)$(OBJSDIR)

         $(MAKE) -C$(WORKDIR)/Components/Protocal/

         $(MAKE) -C$(WORKDIR)/Components/Services/

         $(MAKE) -C $(WORKDIR)/Components/HAL/

         $(MAKE) -C $(WORKDIR)/Components/MCU/

         $(MAKE) -C $(WORKDIR)/Project/wlan_select/

         $(MAKE) -C$(WORKDIR)/Project/Iot_hornet/

         $(CC) $(MPPLIBS) -o $(TARGET)$(OBJSDIR)/*.o $(CFLAGS) $(LIBS)

#$(OBJS):%.o:%.c

#       $(CC) -c $< -o $(OBJSDIR)/[email protected] $(CFLAGS)

#依賴一個偽目標,這樣每次編譯時因為ALWAYSMAKE不存在,都會執行命令

$(OBJSDIR):ALWAYSMAKE

         cp $(OBJS) $(OBJSDIR)

.PHONY:clean

clean:

         $(MAKE) clean -C$(WORKDIR)/Components/Protocal/

         $(MAKE) clean -C$(WORKDIR)/Components/Services/

         $(MAKE) clean -C$(WORKDIR)/Components/HAL/

         $(MAKE) clean -C$(WORKDIR)/Components/MCU/

         $(MAKE) clean -C $(WORKDIR)/Project/wlan_select/

         $(MAKE) clean -C$(WORKDIR)/Project/Iot_hornet/

         $(RM) $(OBJS) $(TARGET)

         $(RM) $(OBJSDIR)/*.o

.PHONY:ALWAYSMAKE

ALWAYSMAKE:

相關推薦

工程編寫自己makefile---8 編寫Arm開發makefile

基於以上的學習,下面編寫一個基於Hi3520D開發板的程式 工程目錄結構如下 . ├── Components │   ├──Common │   │   ├── xx_inc.h │   │   ├── xx_type.h │   ├──HAL │   │   ├──

一步步教你如何在Ubuntu虛擬機器安裝QEMU並模擬模擬arm 開發環境(一)uImage u-boot

初次接觸qemu是因為工作的需要,有時候下了班,可能需要在家研究一些東西,因為博主用到arm環境,這時候博主比較小氣,不願花錢買開發板,當然博主在這裡給大家的建議是,如果要真正學懂arm構架的相關知識,還是單獨買一塊arm的開發板,慢慢摸索吧,畢竟這才是最好的學習方法,如果

ARM開發搭建NFS網絡文件系統方法

安裝 http ext 博客 主機 文件 oot ini first 前邊 已經提到過吧vmare的IP改成了靜態IP,對於上網來說,這個是個麻煩的事。現在重新配置Vmware的IP VMware-Edit-Virtual network editor 選擇PC機的無線網

產品研發ARM開發如何選擇?飛思卡爾I.MX6Q開發

pow 清分 工作 images logs 時鐘 網通 https 處理器 處理器:迅為-i.MX6開發板恩智浦Cortex-A9 四核i.MX6Q處理器,主頻1GHz,內存2G,存儲16GB。 系統支持:i.MX6開發板系統支持LINUX,Android,Ubuntu系統

嵌入式開發ARM開發-迅為4418開發接口基本介紹

4418開發板 接口介紹 迅為4418開發板無縫兼容6818平臺,是北京迅為電子有限公司研發設計的一款開發板平臺,核心板尺寸小,引出腳多,能夠幫助工程師們快速開發新產品。行業應用:iTOP-4418開發板/6818開發板可廣泛適用於工控、智能家居、醫療、多媒體、安防、車載、金融、消費電子、手持設備、顯

移植wpa_supplicant2.5到arm開發

this func gnu error netlink eabi err erro arm-linux 編譯libnl1-1: ./configure --host=arm-linux --enable-static --prefix=/usr/local/ssl CC

初試ARM開發

style min 學習 down win7 too 顯示 pan 成功 博主剛開始學習嵌入式開發,在老師指導下進行了led點亮的實驗。 一、準備工作 開發板型號:Friendly mini 2451 環境:win7+minitools 二、進入usb下載模式 使用 Min

ARM開發 CPU 處理器參數

各arm開發板 cpu 處理器參數ARMV7L S3C2440[JZ2440] ARM920T 400M ARMV6 BCM2835[Raspberry PiB+] ARM11 700M ARMV7L

arm開發上找不到/dev/i2c-*設備

linu arm The iic oar fig com 在一起 直接 最近在調試arm與外設iic通訊是,想來個投機取巧,先不寫單獨的驅動,直接通過iic bus設備是否可以連接到外設,然後發現在板子上找不到“/dev/i2c-n”的設備,標準的系統應該都是有的。 回去看

Ubuntu16.04NFS配置與ARM開發互傳文件_掛載和卸載

分享 all http ini mnt 文件夾 linux系統 don lin 第一步:安裝NFS服務 sudo apt-get install nfs-kernel-server portmap 第二步:增加NFS配置文件 sudo vim /etc/exports 在v

迅為iMX6UL Cortex-A7架構單核ARM開發介面介紹-支援定製

支援商業級和工業級核心板          1. POWER 電源介面電源輸入為 5V/2A+,給核心板提供 5V 電源,給底板供電。原理圖部分如下圖所示。          電

嵌入式ARM開發學習方法步驟

  嵌入式開發就是指在嵌入式作業系統下進行開發,一般常用的系統有linux,android。 平臺:Cortex-A9開發板   嵌入式技術學習如何入手,從何學起呢, 以下內容簡單介紹嵌入式開發的學習步驟及如何成為一位合格的嵌入式工程師,   一、首先要掌握

arm開發做成USB網絡卡(RNDIS /Ethernet Gadget)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ARM開發掛載U盤

將U盤中的hello檔案複製到ARM開發板中(絕大多數作業系統是linux的開發板都適用)。將U盤插到開發板上,會打印出一段資訊: sda: sda1  sd 1:0:0:0: Attached scsi generic sg0 type 0 sd 1:0:0:0: [sda]

ARM開發上搭建sshd環境(嘔血歷程)

安裝按照這個部落格:https://blog.csdn.net/u013711616/article/details/53044918 zlib-1.2.8.tar.gz  openssl-0.9.8d.tar.gz  openssh-5.6p1.tar.gz 資料已打包,見

【嵌入式Linux】ARM開發通過NFS掛載Linux主機實現檔案共享

一般在Linux主機上arm-linux-gcc編譯程式,然後將該生成的可執行檔案傳送給ARM開發板,ARM開發板再執行該檔案。 (主機Linux系統)--->(ARM開發板Linux系統)  傳送檔案的過程可以採用NFS,FTP等多種方法 採用NFS實現遠端掛載,ARM

通過SSH(Secure Shell )訪問arm開發

一 實驗環境: 1、建立好了arm-linux交叉編譯環境#arm-linux-gcc -v開發板已與路由器相連,並進行了必要的網路配置,開發板和主機可以ping通。 2、本實驗使用的是AM335X開發板,已進行構建檔案系統配置,配置參考的是MYD-AM33

將lrzsz工具移植到ARM開發 ---只通過串列埠實現window和ARM之間檔案互傳

事情背景:由於需要在windows和ARM板之間只通過串列埠傳輸檔案(windows的檔案只通過串列埠傳輸到ARM板上) 這時超級終端SecureCRT+lrzsz工具可以完成這項使命!(其他終端軟體

ARM開發編譯----MYS-6ULX

記錄一下之前燒ARM板的經歷,本人第一次燒ARM板,歡迎大家評論探討 剛畢業,一進公司就被安排的明明白白。望著手中嶄新的板子,慢慢摸索唄 首先說一個慘痛的經歷,由於沒有經驗,對Linux核心、系統等不熟悉,一開始就是自己在PC上裝了一個虛擬機器,分配了1G記憶體和50G硬碟(好吧,在學校

【迅為推薦】適合新手學習的arm開發-iTOP-4412開發

 免費部分視訊試看地址:(PS:迅為提供高清版下載地址)【視訊教程】iTOP-4412開發板之學習方法--致初學者  http://v.youku.com/v_show/id_XNzQ5MDA4NzM2.html【視訊教程】三星Exynos 4412處理器開發要點   htt