Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么修改了源文件和头文件,但没有重新编译生成文件_C_Makefile - Fatal编程技术网

C 为什么修改了源文件和头文件,但没有重新编译生成文件

C 为什么修改了源文件和头文件,但没有重新编译生成文件,c,makefile,C,Makefile,我遇到了关于makefile的问题,我修改了我的两个源文件linkec.c和link_cloud.c,以及两个头文件link_ec.h和link_cloud.h,但makefile没有重新编译。写在哪里有问题吗 我的makefile如下所示: LIB_FOR_JSON = ./lib/json_lib/* LIB_FOR_MQTT = ./lib/mqtt_lib/* SRC_DIR = ./src OUTPUT_DIR

我遇到了关于makefile的问题,我修改了我的两个源文件linkec.c和link_cloud.c,以及两个头文件link_ec.h和link_cloud.h,但makefile没有重新编译。写在哪里有问题吗

我的makefile如下所示:

LIB_FOR_JSON          = ./lib/json_lib/*
LIB_FOR_MQTT          = ./lib/mqtt_lib/*


SRC_DIR               = ./src
OUTPUT_DIR            = ./output
SYS_LOCAL_LIB_DIR     = /usr/local/lib

TARGET    = linkCloudApp
RM        = rm -rf 
MV        = mv 
CP        = cp -r
LDCONFIG  = ldconfig

#### compile comment #####  
COMPILE                    = aarch64-linux-gnu-
CC                         = $(COMPILE)gcc
STRIP                      = $(COMPILE)strip
LD                         = $(COMPILE)ld

COMPILE_OPTION             = -O2 -Wall  -Wcomment -Wformat -Wmissing-braces -Wswitch -Wuninitialized  \
                             -Wbad-function-cast -Waggregate-return -Wmultichar -Wsign-compare -Wshadow
#COMPILE_OPTION_DEBUG       = -gdwarf-2 -g 

COMPILE_ALL_OPTION         += $(COMPILE_OPTION) $(COMPILE_OPTION_DEBUG)

LINK_OPTION                 =  -lpaho-mqtt3a -ljson-c  -lm  -lpthread -lz

OBJS_MAIN                  = main.o
OBJS_LINK_EC               = link_ec.o
OBJS_LINK_CLOUD            = link_cloud.o


OBJS = $(OBJS_MAIN) $(OBJS_LINK_EC) $(OBJS_LINK_CLOUD)

                         
$(TARGET):$(OBJS)
    $(CC) -o $(OUTPUT_DIR)/$(TARGET)  $(OBJS)  $(LINK_OPTION)
    $(STRIP) $(OUTPUT_DIR)/$(TARGET)


$(OBJS_MAIN):
    $(CC) -c $(SRC_DIR)/main.c $(COMPILE_ALL_OPTION)
$(OBJS_LINK_EC):
    $(CC) -c $(SRC_DIR)/link_ec.c $(COMPILE_ALL_OPTION)
$(OBJS_LINK_CLOUD):
    $(CC) -c $(SRC_DIR)/link_cloud.c $(COMPILE_ALL_OPTION)



    
.PHONY:clean copylib
clean:
    -$(RM) $(OUTPUT_DIR)/* $(OBJS)
copylib:
    $(CP) $(LIB_FOR_MQTT) $(SYS_LOCAL_LIB_DIR)/
    $(CP) $(LIB_FOR_JSON) $(SYS_LOCAL_LIB_DIR)/
    $(LDCONFIG)
    

您的对象文件配方没有任何关联的依赖项,因此除非您明确指定它们,否则无法生成它们

将.c文件添加到依赖项列表:

$(OBJS_MAIN): $(SRC_DIR)/main.c
    $(CC) -c $(SRC_DIR)/main.c $(COMPILE_ALL_OPTION)
$(OBJS_LINK_EC): $(SRC_DIR)/link_ec.c
    $(CC) -c $(SRC_DIR)/link_ec.c $(COMPILE_ALL_OPTION)
$(OBJS_LINK_CLOUD): $(SRC_DIR)/link_cloud.c
    $(CC) -c $(SRC_DIR)/link_cloud.c $(COMPILE_ALL_OPTION)
或者,您可以为所有.o文件创建一个通用目标:

%.o: $(SRC_DIR)/%.c
    $(CC) $(COMPILE_ALL_OPTION) -c $<
%.o:$(SRC_DIR)/%.c
$(CC)$(编译所有选项)-c$<

您的对象文件配方没有任何关联的依赖项,因此除非您明确指定它们,否则无法生成它们

将.c文件添加到依赖项列表:

$(OBJS_MAIN): $(SRC_DIR)/main.c
    $(CC) -c $(SRC_DIR)/main.c $(COMPILE_ALL_OPTION)
$(OBJS_LINK_EC): $(SRC_DIR)/link_ec.c
    $(CC) -c $(SRC_DIR)/link_ec.c $(COMPILE_ALL_OPTION)
$(OBJS_LINK_CLOUD): $(SRC_DIR)/link_cloud.c
    $(CC) -c $(SRC_DIR)/link_cloud.c $(COMPILE_ALL_OPTION)
或者,您可以为所有.o文件创建一个通用目标:

%.o: $(SRC_DIR)/%.c
    $(CC) $(COMPILE_ALL_OPTION) -c $<
%.o:$(SRC_DIR)/%.c
$(CC)$(编译所有选项)-c$<