IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 一个简单的Makefile -> 正文阅读

[系统运维]Linux 一个简单的Makefile

直接上例子,一眼看懂的可以忽略后面说明

.PHONY: clean test


TARGET=test
SRC=test.c
OBJS=$(SRC:.c=.o)

CC=gcc
CLFAGS=-g -O2
LIB=-L ./lib -ladd
INC=-I ./inc

$(TARGET):$(OBJS)
        $(CC) -o $@ $^ $(LIB)

%.o:%.c
        $(CC) -o $@ -c $^ $(INC)


clean:
        rm -rf *.o $(TARGET)

说明

PHONY伪目标,为什么会有伪目标,直白点当你当前目录有一个文件叫clean,如果没有.PHONEY clean ,当你执行make clean,它并不会执行下面clean对应的rm操作;如果加上伪目标 clean,make clean会执行你makefile中clean段的内容

TARGET:目标文件名称

SRC:源文件名称

OBJS:中间文件生成规则,将所有c文件生成对应中间对象文件o这样可以省去重复的规则,比如有两个源文件文件mian.c和hello.c本来是如下规则写

main.o: main.c
        cc -c main.c

hello.o: hello.c
        cc -c hello.c

因为他们规则都一样,所以可以改成OBJS=$(SRC:.c=.o)

CC:指定编译工具;

CLFGAS:交叉编译的选项,这里-g生成调试信息,-O2表示优化级别为2,一般有四个优化级别,-O0表示没有优化,-O3优化级别最高,默认为-O1

LIB:-L 是lib的路径名,-l是lib文件名;

INC:-I 头文件路径名;

$(TARGET):$(OBJS):指定目标文件生成规则,注意这里有LIB,因为编译生成的中间文件最后链接需要对应引用库;

%.o:%.c:指定源文件和中间文件生成规则,如果有引用一些私有头文件,需要指定$(INC)指明头文件路径;

clean:清除生成的中间文件和最后生成的目标文件

【附】

gcc 命令的常用选项

选项解释
-ansi只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。
-c只编译并生成目标文件。
-DMACRO以字符串"1"定义 MACRO 宏。
-DMACRO=DEFN以字符串"DEFN"定义 MACRO 宏。
-E只运行 C 预编译器。
-g生成调试信息。GNU 调试器可利用该信息。
-IDIRECTORY指定额外的头文件搜索路径DIRECTORY。
-LDIRECTORY指定额外的函数库搜索路径DIRECTORY。
-lLIBRARY连接时搜索指定的函数库LIBRARY。
-m486针对 486 进行代码优化。
-o FILE生成指定的输出文件。用在生成可执行文件时。
-O0不进行优化处理。
-O 或 -O1优化生成代码。
-O2进一步优化。
-O3比 -O2 更进一步优化,包括 inline 函数。
-shared生成共享目标文件。通常用在建立共享库时。
-static禁止使用共享连接。
-UMACRO取消对 MACRO 宏的定义。
-w不生成任何警告信息。
-Wall生成所有警告信息。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 17:05:14  更:2021-08-23 17:07:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:01:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码