Linux Makefile配置问题
编写一个简单的工程文件,制作Makefile需要包含lpthread,当Makefile写为如下配置时
#CROSSCOMPILE := arm-linux-
CROSSCOMPILE :=
CFLAGS := -Wall -O2 -c
CFLAGS += -I$(PWD)
LDFLAGS := -lpthread
LDFLAGS += -lm -ldl
CC := $(CROSSCOMPILE)gcc
#LD := $(CROSSCOMPILE)ld
OBJS := main.o \
cJSON.o \
cmd.o \
mqtt.o \
socket_client.o
all: $(OBJS)
$(CC) $(LDFLAGS) -o mqtt_client $^
clean:
rm -f mqtt_client
rm -f $(OBJS)
%.o:%.c
$(CC) $(CFLAGS) -o $@ $<
~
出现了错误
main.o:在函数‘main_loop’中:
main.c:(.text+0x25):对‘pthread_create’未定义的引用
main.c:(.text+0x3a):对‘pthread_create’未定义的引用
参考博文:https://dontla.blog.csdn.net/article/details/122637407?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-122637407-blog-105294018.235%5Ev38%5Epc_relevant_yljh&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-122637407-blog-105294018.235%5Ev38%5Epc_relevant_yljh&utm_relevant_index=9
参考博文将-lpthread放到编译后面,重新编译-lpthread错误解决。
编译cJSON相关的代码,出现如下错误:
cJSON.o:在函数‘parse_value’中:
cJSON.c:(.text+0x6e1):对‘pow’未定义的引用
添加编译选项:
LDFLAGS += -lm -ldl
编译成功。