读懂makefile一



#export PATH=/home/xiehuihuang/git3Linux/apps/azure-iot-sdk-c/armC/gcc-linaro-5.3.1-2016.05-i686_arm-linux-gnueabihf/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

##添加针对目标平台的交叉编译工具的搜索路径
export PATH=/opt/share/gcc-fsl/fsl-linaro-toolchain/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games


#CC=arm-linux-gnueabihf-gcc
#LD=arm-linux-gnueabihf-ld
#CXX=arm-linux-gnueabihf-gcc
#STRIP=arm-linux-gnueabihf-strip
#AR=arm-linux-gnueabihf-ar


CC=arm-linux-gcc #指定交叉编译工具gcc
LD=arm-linux-ld #指定交叉编译工具ld
CXX=arm-linux-gcc #指定交叉编译工具g++
STRIP=arm-linux-strip #指定交叉编译工具strip
AR=arm-linux-ar #指定交叉编译工具ar


SRC_DIR=./src #定义变量,指定源码目录
INC_DIR=./inc #定义变量,指定头文件目录
INC_DIR2=../c-utility/inc #定义变量,指定头文件目录,说明当前库文件编译需要c-utility库文件的相关头文件


#指定头文件搜索路径的目录列表,

INCLUDE=-I$(INC_DIR)
INCLUDE += -I$(INC_DIR2)
INCLUDE += -I.
INCLUDE += -I../parson-master
INCLUDE += -I../azure-uamqp-c/inc
INCLUDE += -I./src
INCLUDE += -I../umqtt/inc

#指定库文件搜索路径列表
LIBDIR=-L./

#
CFLAGS = $(INCLUDE) -pipe #指定gcc编译的-pipe特性,
OPTCFLAGS = -Wall #开启gcc编译的警告消息
OPTCFLAGS += -O3 #O3优化
TARGET_LIB=iothub_client.so
TARGET=iothub_client.so


#TARGET=test


CFLAGS += -Wall -fPIC -std=c99 #开启gcc警告,c99标准
#LDFLAGS += -L../c-utility -c-utility


#在$(SRC_DIR)路径中找到所有的*.c文件,形成呢个以空格问间隔的*.c文件列表

SRC_CODE  =  $(patsubst $(SRC_DIR)/%.c,$(SRC_DIR)/%.c, $(wildcard $(SRC_DIR)/*.c)) 



#在$(SRC_DIR)路径中找到所有的*.c文件,并把.c替换成.o形成以空格问间隔的*.o文件列表
OBJET_O=$(patsubst $(SRC_DIR)/%.c,$(SRC_DIR)/%.o, $(wildcard $(SRC_DIR)/*.c)) 



#在$(INC_DIR)路径中找到所有的*.h文件,形成以空格问间隔的*.h文件列表

HEADER=$(patsubst $(INC_DIR)/%.h,$(INC_DIR)/%.h, $(wildcard $(INC_DIR)/*.h)) 




all:$(TARGET) #all已经被.PHONY声明为为目标,那么$(TARGET)目标依赖会全部生成
$(TARGET):$(OBJET_O) #目标:依赖关系
$(LD) -shared -o $@ $^ #ld,将.o目标连接成共享库文件$TARGET,也就是iothub_client.so
# $(AR) -rs $@ $^


.c.o: #相当于 %o:%c
$(CC) $(CFLAGS) -c $^ -o $@


clean:
rm $(OBJET_O)
rm  ./$(TARGET)

install: all #all形成,为目标可以不形成,其依赖的目标要形成,如$(TARGET)
install -D $(TARGET) $(ROOTFS_PATH)/apps/lib/$(TARGET)


uninstall: #和clean类似
rm -f $(ROOTFS_PATH)/apps/lib/$(TARGET)

.PHONY:all clean test
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值