读懂makefile一

    xiaoxiao2021-03-25  100

    #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
    转载请注明原文地址: https://ju.6miu.com/read-21735.html

    最新回复(0)