Linux Makefile配置问题

编写一个简单的工程文件,制作Makefile需要包含lpthread,当Makefile写为如下配置时

bash 复制代码
#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

编译成功。

相关推荐
冷冷清清中的风风火火7 分钟前
linux里怎么禁用 其他用户使用sudo添加定时器,例如创建的tomcat用户禁止使用 sudo crontab -u tomcat -e 添加定时器
linux·tomcat·firefox
江湖有缘32 分钟前
Linux系统之rm命令的基本使用
linux·运维·服务器
有梦想的攻城狮1 小时前
spring-cloud-starter-alibaba-sentinel使用说明
linux·服务器·sentinel·springcloud
陆沙1 小时前
centos-LLM-生物信息-BioGPT安装
linux·人工智能·centos·aigc·生物信息·生信
源远流长jerry2 小时前
Linux 虚拟内存访问流程:缺页异常处理与页表映射机制详解
linux
CYRUS STUDIO2 小时前
Frida 调用 kill 命令挂起&恢复 Android 线程
android·linux·逆向·frida
FOREVERHOPE_WBZ2 小时前
CentOS 中下载rpm包并安装
linux·运维·centos
阳区欠2 小时前
【Linux】线程的概念与控制
linux·线程概念·分页式存储·线程库pthread
dessler2 小时前
Kubernetes(k8s)-备份&Etcd介绍
linux·运维·kubernetes
元气满满的热码式2 小时前
解决制作CI流水线时的no host异常报错
linux·服务器·ci/cd·云原生·kubernetes