1. 并行编译:使用 make -j 命令来进行并行编译,可以加快编译速度。-j 后面可以跟一个数字,表示并行编译的线程数。

  2. 懒惰计算:使用 .PHONY 规则来避免无谓的重新编译。该规则告诉 make,这个规则不需要实际的文件来作为依赖,每次都要重新执行。例如:

.PHONY: all
all: hello.c
gcc -o hello hello.c
  1. 禁止隐式规则:如果你知道你并不需要使用 make 提供的隐式规则,可以使用 .SUFFIXES 规则禁止掉它们。例如:\
.SUFFIXES:
  1. 指定编译器选项:使用 -O 开启编译器优化选项,可以提高程序执行速度。例如:
CFLAGS=-O
all: hello.c
gcc $(CFLAGS) -o hello hello.c
  1. 分离头文件:将头文件和源文件分离,可以避免重复编译,减少编译时间。例如:
all: hello.o main.o
gcc -o myprog hello.o main.o
hello.o: hello.c hello.h
gcc -c hello.c
main.o: main.c hello.h
gcc -c main.c
  1. 使用预编译头文件:将常用的头文件编译成单独的预编译头文件,可以加快编译速度。例如:
all: hello.o main.o
gcc -o myprog hello.o main.o
hello.o: hello.c hello.h stdio.h
gcc -c -include stdio.h hello.c
main.o: main.c hello.h stdio.h
gcc -c -include stdio.h main.c
  1. 指定输出目录:将目标文件存放在一个独立的目录中,可以避免编译产生的文件污染源代码目录。例如:
OBJDIR=obj
SRCDIR=src
all: $(OBJDIR)/hello.o $(OBJDIR)/main.o
gcc -o myprog $(OBJDIR)/hello.o $(OBJDIR)/main.o
$(OBJDIR)/hello.o: $(SRCDIR)/hello.c $(SRCDIR)/hello.h
gcc -c -o $(OBJDIR)/hello.o $(SRCDIR)/hello.c
$(OBJDIR)/main.o: $(SRCDIR)/main.c $(SRCDIR)/hello.h
gcc -c -o $(OBJDIR)/main.o $(SRCDIR)/main.c

Makefile优化编译速度的更多相关文章

  1. Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度

    原文:Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度 嫌项目编译太慢?不一定是 Visual Studio 的问题,有可能 ...

  2. Android Studio优化编译速度

    随着Android Studio的不断完善,其安卓开发者阵营也基本从Eclipse转移到了Android Studio,毕竟Android Studio是谷歌亲力亲为开发的官方开发软件.不过其最重要的 ...

  3. webpack2使用ch6-babel使用 处理es6 优化编译速度

    1 目录结构 安装依赖 cnpm install --save-dev babel-loader babel-core babel-preset-env babel-preset-latest &qu ...

  4. Linux Makefile 编译速度的优化【转】

    转自:https://blog.csdn.net/QQ1452008/article/details/51851801 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  5. 使用ant优化android项目编译速度,提高工作效率

    1.Android项目编译周期长,编译项目命令取消困难 2.在进行Android项目的编译的同时,Eclipse锁定工作区不能进行修改操作 3.在只进行资源文件的修改时,Eclipse对资源文件的修改 ...

  6. 微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结

    1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶 ...

  7. 优化MyEclipse编译速度慢的问题、build、project clean 慢

    优化MyEclipse编译速度慢的问题(重点是1) 1 .关闭MyEclipse的自动validation windows > perferences > myeclipse > v ...

  8. dWebpack编译速度优化实战

    当你的应用的规模还很小时,你可能不会在乎Webpack的编译速度,无论使用3.X还是4.X版本,它都足够快,或者说至少没让你等得不耐烦.但随着业务的增多,嗖嗖嗖一下项目就有上百个组件了,也是件很简单的 ...

  9. Android Sutido 编译速度优化

    虽然Android Studio 此时已经更新到了Android Studio 2.1版本,build 版本android-studio-bundle-143.2739321.但是在安装该版本都是根据 ...

  10. Java动态编译优化——提升编译速度(N倍)

    一.前言 最近一直在研究Java8 的动态编译, 并且也被ZipFileIndex$Entry 内存泄漏所困扰,在无意中,看到一个第三方插件的动态编译.并且编译速度是原来的2-3倍.原本打算直接用这个 ...

随机推荐

  1. 【Layui】16 表单元素 Form

    文档地址: https://www.layui.com/demo/form.html 表单元素: 1.输入框 2.密码框 3.下拉列表 4.单选框 5.复选框 6.文档域 7.富文本 8.开关 单行输 ...

  2. MyBatis-Plus删除操作的几种基本方法

    delete删除的三种方法 一.根据 id 删除 @Test void deleteById(Integer id) { empMapper.deleteById(new Emp().getId()) ...

  3. 计算机论文中的SD SE是什么 ?

    Standard Deviation (SD) and Standard Error (SE): 标准差和标准误差:在统计学和数据分析中常用来描述数据的分布和估计值的精确性.SD 表示标准差,SE 表 ...

  4. 国产操作系统——银河麒麟V10 SP1使用小结

    前几天看新闻国产操作系统银河麒麟有了新的更新于是上手搞了一个. ========================================================= 该系统自带驱动,其中 ...

  5. 微信支付退款和退款结果查询接口简单实现(.Net 7.0)

    〇.前言 相较于支付宝,微信支付对 .Net 的支持就没那么充分,官方没有提供 SDK. 但值得庆幸的是,在社区有大佬封装了 v3 版 .Net SDK. 原文链接:https://developer ...

  6. 成为Apache SeaTunnel贡献者的N种方式

    如何参与开源贡献 参与开源贡献的常见方法有多种: 1)参与解答 在社区中, 帮助使用过程中遇到困难的人,帮他们解释框架的用法也算是一种贡献. 2)文档贡献 帮助框架来完善文档,比如说将英文文档翻译为中 ...

  7. Kotlin 控制流和数组操作详解

    Kotlin when 与编写许多 if..else 表达式相比,您可以使用 when 表达式,它更易读. 它用于选择要执行的多个代码块中的一个: 示例 使用星期几的编号来计算星期几的名称: val ...

  8. 推荐一个优秀的 .NET MAUI 组件库

    前言 .NET MAUI 的发布,项目中可以使用这个新的跨平台 UI 框架来轻松搭建的移动和桌面应用. 为了帮助大家更快地构建美观且功能丰富的应用,本文将推荐一款优秀的 .NET MAUI 组件库MD ...

  9. 进击的AI工具集:全能AI阅读软件Walles AI

    在信息爆炸的时代,快速而准确地阅读大量内容,对于每个人都是一种常态挑战. 这些海量信息资讯和知识的涌入,可能导致信息过载,手忙脚乱,且分神费力. 好消息是,我们已经进入了 AIGC时代,随着ChatG ...

  10. 【牛客刷题】HJ4 字符串分隔

    题目链接 这个题目本身基本上是对语言熟悉程度的考察,没有什么别的逻辑可言: package main import ( "fmt" "strings" ) fu ...