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

编译成功。

相关推荐
H.莓飛2 分钟前
【数据结构】二叉树
linux·数据结构·算法
荣合技术服务13 分钟前
VMware ESXi 虚拟化平台服务器虚拟机数据恢复服务
linux·运维·服务器
杭州领祺科技16 分钟前
保信子站深度解析:继电保护信息采集与故障诊断的关键枢纽
linux·服务器·网络·新能源·储能·虚拟电厂
xh didida19 分钟前
Linux -- 进程概念
linux·服务器·开发语言·c++
爱吃香菜的初学者19 分钟前
十三.Linux——信号量
linux·运维·服务器·开发语言
小小龙学IT34 分钟前
ROS2 安装完全指南(Ubuntu 版):从零开始到跑通第一个节点本文
linux·运维·ubuntu
Ruiery36 分钟前
Linux 6.6内核 CPU 深度解析(十二):SMT 进阶 — core scheduling 与共享算力的负载平衡
linux·运维·服务器
影视飓风TIM37 分钟前
Linux 进程虚拟地址空间详解
linux·算法
硅基手札1 小时前
【Linux内核专栏 12】VFS 与文件系统
linux
水饺编程1 小时前
第1章:开发环境搭建,在 Windows 中安装 VS 2019
linux·c语言·汇编·visual studio