当前位置: 首页 > ai >正文

Ubuntu解决makefile交叉编译的问题

问题1:


/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: cannot find -lwiringpi: No such file or directory
找不到-lwiringpi库路径,其实在3rd/usr/lib/aarch64-linux-gnu下没有libwiringPi.so.2                                                                                                                                                                 libwiringPi.so.2.50的文件

解决方法:

安装 ARM64 版本的 deb 包
如果你有 ARM64 设备,可以直接在设备上运行:sudo apt update
sudo apt install wiringpi
然后将 /usr/lib/aarch64-linux-gnu/libwiringPi.so.* 复制到宿主机的交叉编译路径中(如 ./3rd/usr/lib/aarch64-linux-gnu/)。

问题二:

/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: cannot open output file obj/garbage: No such file or directory

一个错误:`cannot open output file obj/garbage: No such file or directory`。这意味着在链接时,无法创建输出文件`obj/garbage`。可能的原因是目录`obj`不存在,或者权限问题。查看Makefile,我注意到在链接目标之前,有一个命令尝试创建目录,但可能存在一些问题。

  1. 修正了OBJ变量的定义,使用正确的patsubst模式:$(patsubst src/%.c,obj/%.o,$(SRC))

  2. 删除了无效的目录创建命令$(shell mkdir -p $(dir &(OBJ)))(因为存在语法错误且不需要)

  3. 在模式规则obj/%.o中,将$(dir &(OBJ))修正为$(dir $@),确保创建当前目标文件的目录

  4. 在链接规则$(TARGET)中,添加了目录创建命令@mkdir -p $(dir $(TARGET)),确保输出目录存在

  5. 链接命令中移除了$(CFLAGS),因为链接阶段不需要头文件路径

问题3:

huang@huang-Ubuntu:~/smart_brush_can$ make compile
aarch64-linux-gnu-gcc -o obj/smartRubishCan.o -c src/smartRubishCan.c -I./inc -I./3rd/usr/local/include -I./3rd/usr/include -I./3rd/usr/include/python3.10 -I./3rd/usr/include/aarch64-linux-gnu/python3.10 -I./3rd/usr/include/aarch64-linux-gnu     # 类似gcc -o garbage garbage.c -I./inc  指令
aarch64-linux-gnu-gcc -o obj/socket.o -c src/socket.c -I./inc -I./3rd/usr/local/include -I./3rd/usr/include -I./3rd/usr/include/python3.10 -I./3rd/usr/include/aarch64-linux-gnu/python3.10 -I./3rd/usr/include/aarch64-linux-gnu     # 类似gcc -o garbage garbage.c -I./inc  指令
aarch64-linux-gnu-gcc -o obj/uartTool.o -c src/uartTool.c -I./inc -I./3rd/usr/local/include -I./3rd/usr/include -I./3rd/usr/include/python3.10 -I./3rd/usr/include/aarch64-linux-gnu/python3.10 -I./3rd/usr/include/aarch64-linux-gnu     # 类似gcc -o garbage garbage.c -I./inc  指令
aarch64-linux-gnu-gcc -o obj/p_smartTrashCan.o -c src/p_smartTrashCan.c -I./inc -I./3rd/usr/local/include -I./3rd/usr/include -I./3rd/usr/include/python3.10 -I./3rd/usr/include/aarch64-linux-gnu/python3.10 -I./3rd/usr/include/aarch64-linux-gnu     # 类似gcc -o garbage garbage.c -I./inc  指令
aarch64-linux-gnu-gcc -o obj/garbage.o -c src/garbage.c -I./inc -I./3rd/usr/local/include -I./3rd/usr/include -I./3rd/usr/include/python3.10 -I./3rd/usr/include/aarch64-linux-gnu/python3.10 -I./3rd/usr/include/aarch64-linux-gnu     # 类似gcc -o garbage garbage.c -I./inc  指令
aarch64-linux-gnu-gcc -o obj/garbage obj/smartRubishCan.o obj/socket.o obj/uartTool.o obj/p_smartTrashCan.o obj/garbage.o -I./inc -I./3rd/usr/local/include -I./3rd/usr/include -I./3rd/usr/include/python3.10 -I./3rd/usr/include/aarch64-linux-gnu/python3.10 -I./3rd/usr/include/aarch64-linux-gnu  -L./3rd/usr/local/lib -L./3rd/lib/aarch64-linux-gnu -L./3rd/usr/lib/aarch64-linux-gnu -L./3rd/usr/lib/python3.10 -lwiringPi -lpython3.10 -pthread -lcrypt    # 链命令
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: warning: libexpat.so.1, needed by ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so, not found (try using -rpath or -rpath-link)
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: warning: libz.so.1, needed by ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so, not found (try using -rpath or -rpath-link)
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_ExpatVersion'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetEndElementHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_ParserCreate_MM'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetEncoding'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `inflateEnd'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetBase'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetParamEntityParsing'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetNamespaceDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `deflate'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `deflateInit_'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetErrorCode'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetUserData'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_ExternalEntityParserCreate'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `inflateCopy@ZLIB_1.2.0'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetCurrentColumnNumber'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `inflateInit2_'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetStartDoctypeDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetStartCdataSectionHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `inflate'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetDefaultHandlerExpand'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetExternalEntityRefHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetXmlDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `crc32'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetInputContext'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetStartNamespaceDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `deflateEnd'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetEndDoctypeDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `zlibVersion'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_FreeContentModel'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_UseForeignDTD'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetDefaultHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_ParseBuffer'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetSpecifiedAttributeCount'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetNotStandaloneHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `inflateSetDictionary'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_ExpatVersionInfo'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetCurrentLineNumber'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetEndCdataSectionHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetCommentHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetSkippedEntityHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetProcessingInstructionHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetBase'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetElementDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_ErrorString'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetEndNamespaceDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetNotationDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetReturnNSTriplet'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetEntityDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `deflateCopy'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_ParserFree'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `deflateInit2_'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetElementHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetUnknownEncodingHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_StopParser'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetFeatureList'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetAttlistDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetStartElementHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_Parse'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetBuffer'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `deflateSetDictionary'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_GetCurrentByteIndex'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `adler32'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetCharacterDataHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetUnparsedEntityDeclHandler'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: ./3rd/usr/lib/aarch64-linux-gnu/libpython3.10.so: undefined reference to `XML_SetHashSalt'
collect2: error: ld returned 1 exit status
make: *** [Makefile:41: obj/garbage] Error 1
huang@huang-Ubuntu:~/smart_brush_can$

主要问题是缺少两个重要的库:libexpat.so.1 和 libz.so.1。这些库是 Python 运行时所依赖的。

解决方法:

在 LIBS 变量中添加缺失的库:

LIBS := -lwiringPi -lpython3.10 -lexpat -lz -pthread -lcrypt -ldl -lutil -lm

最终解决好啦


huang@huang-Ubuntu:~/smart_brush_can$ make compile
aarch64-linux-gnu-gcc -o obj/garbage obj/smartRubishCan.o obj/socket.o obj/uartTool.o obj/p_smartTrashCan.o obj/garbage.o -I./inc -I./3rd/usr/local/include -I./3rd/usr/include -I./3rd/usr/include/python3.10 -I./3rd/usr/include/aarch64-linux-gnu/python3.10 -I./3rd/usr/include/aarch64-linux-gnu  -L./3rd/usr/local/lib -L./3rd/lib/aarch64-linux-gnu -L./3rd/usr/lib/aarch64-linux-gnu -L./3rd/usr/lib/python3.10 -lwiringPi -lpython3.10 -pthread -lcrypt -lexpat -lz -lm -ldl -lutil    # 链命令
huang@huang-Ubuntu:~/smart_brush_can$ ^C
huang@huang-Ubuntu:~/smart_brush_can$ ls -la obj/garbage
-rwxrwxr-x 1 huang huang 25112 Aug 22 09:03 obj/garbage
huang@huang-Ubuntu:~/smart_brush_can$ file obj/garbage
obj/garbage: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=d6f9ab643d3320ef46676e0c6a698cfcdfb9bc2f, for GNU/Linux 3.7.0, not stripped
huang@huang-Ubuntu:~/smart_brush_can$

makefile

# 定义交叉编译工具
CC := aarch64-linux-gnu-gcc
# 存放所有的.c文件,shell函数查找所有当前目录及其子目录的.c文件
SRC := $(shell find src -name "*.c")
# 头文件
INC := ./inc \./3rd/usr/local/include \./3rd/usr/include \./3rd/usr/include/python3.10 \./3rd/usr/include/aarch64-linux-gnu/python3.10 \./3rd/usr/include/aarch64-linux-gnu# 所有.c文件生成.o在obj文件夹
OBJ := $(patsubst src/%.c,obj/%.o,$(SRC))# 创建目标,存在obj/garbage
TARGET := obj/garbage# 存放-I的所有头文件,foreach函数就是将INC的变量前面加上-I
CFLAGS := $(foreach item,$(INC),-I$(item)) LIB_PATH := ./3rd/usr/local/lib \./3rd/lib/aarch64-linux-gnu \./3rd/usr/lib/aarch64-linux-gnu \./3rd/usr/lib/python3.10# 指定库文件路径,foreach函数就是将LIB_PATH的变量前面加上-L
LDFLAGS := $(foreach item,$(LIB_PATH),-L$(item))# 链接库
LIBS := -lwiringPi -lpython3.10 -pthread -lcrypt -lexpat -lz -lm -ldl -lutil# 每个.c对应一个.o文件,通配符%
obj/%.o: src/%.c@mkdir -p $(dir $@)    # 创建obj文件夹$(CC) -o $@ -c $< $(CFLAGS)    # 类似gcc -o garbage garbage.c -I./inc  指令# 将.o文件连接输出obj/garbage
$(TARGET): $(OBJ)@mkdir -p $(dir $(TARGET))$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) $(LIBS)    # 链命令# 编译指令
compile: $(TARGET)# 调试指令
debug:@echo "CC: $(CC)"@echo "SRC: $(SRC)"@echo "OBJ: $(OBJ)"@echo "TARGET: $(TARGET)"@echo "CFLAGS: $(CFLAGS)"@echo "LDFLAGS: $(LDFLAGS)"@echo "First object rule example:"@echo "  obj/$(firstword $(notdir $(OBJ))): src/$(firstword $(notdir $(SRC)))"# 清除指令
clean:rm -rf $(TARGET) obj# 伪目标
.PHONY: debug compile clean

http://www.xdnf.cn/news/18430.html

相关文章:

  • Android Jetpack | Hilt
  • 机器人爆发、汽车换代,速腾聚创开始讲新故事
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析八
  • 【数据结构】选择排序:直接选择与堆排序详解
  • 前端项目打包+自动压缩打包文件+自动上传部署远程服务器
  • 为什么需要关注Flink并行度?
  • 【C#】观察者模式 + UI 线程调度、委托讲解
  • 大学校园安消一体化平台——多警合一实现智能联动与网格化管理
  • Redis 678
  • Hyperledger Fabric官方中文教程-改进笔记(十四)-向通道中添加组织
  • open webui源码分析7—过滤器
  • 获取后台返回的错误码
  • Linux822 shell:expect 批量
  • 车辆方向数据集 - 物体检测
  • 作品集PDF又大又卡?我用InDesign+Acrobat AI构建轻量化交互式文档工作流
  • 【LeetCode每日一题】238. 除自身以外数组的乘积
  • 【链表 - LeetCode】2. 两数相加
  • 服务器与客户端
  • 零基础从头教学Linux(Day 18)
  • 北斗导航 | 基于MCMC粒子滤波的接收机自主完好性监测(RAIM)算法(附matlab代码)
  • 【Linux我做主】细说进程地址空间
  • Spring Boot全局异常捕获指南
  • Jenkins自动化部署服务到Kubernetes环境
  • Java 面试题训练助手 Web 版本
  • JavaScript 操作 DOM
  • php apache无法接收到Authorization header
  • express+mongoose的node部署
  • 优考试局域网系统V6.0.0版
  • AI 论文周报丨多模态记忆智能体/视觉基础模型/推理模型等多领域成果一键速览
  • AI服务器介绍