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. Fiddler篡改请求和响应数据

    Fiddler标记断点后,我们可以通过篡改请求或响应数据,来模拟客户端请求和服务器响应. 一.打断点的方式 1.1 工具栏设置断点 工具栏勾选断点类型进行断点,路径:Rules->Automat ...

  2. Python多进程共享numpy 数组

    引用:https://zhuanlan.zhihu.com/p/32513483 共享 numpy 数组 需要用到 numpy 时往往是数据量较大的场景,如果直接复制会造成大量内存浪费.共享 nump ...

  3. 强化学习性能测试方法:取最后10个epoch的testing epoch的均值 —— 强化学习中的一种性能测试方法

    参考: https://www.cnblogs.com/devilmaycry812839668/p/17813337.html The Actor-Mimic and expert DQN trai ...

  4. Java IO流的简单使用 通俗易懂 超详细 【内含案例】

    IO流简单使用 InputStream 字节输入流 OutputStream 字节输出流 Reader 字符输入流 Writer 字符输出流 代码示例 输入和输出是相对于程序来说的,读取到程序中叫做输 ...

  5. 麒麟系统ARM架构下MySQL5.7离线安装,搭建主从集群

    一.检查本机操作系统 #一定要注意查看本机的操作系统,是amd(x86)还是arm(aarch)架构 $ uname -a Linux Server-58aa6d9e-9412-4ab6-b496-2 ...

  6. CSS学习(一)CSS和文档

    应用样式的三种方式 外部样式表(link.@import) 嵌入式样式表(<style></style>) 行内样式 (html元素的属性为style的值作为样式) CSS的空 ...

  7. 一分钟搭建Ghost个人网站博客系统

    什么是Ghost博客系统 Ghost 是一款设计简约.主题精致的个人博客系统,Ghost支持多用户创建和编辑,支持Markdown格式撰写文章,编辑的内容可即时预览. 创建轻量云主机 这里默认你已经有 ...

  8. Kubernetes-4:kubectl常用命令总结

    kubectl常用命令 1.kubectl get 显示资源 ## 查看pod列表,若pod后不指定名称空间(namespace),则默认为default名称空间 kubectl get pod ## ...

  9. Centos8下搭建私人开源网盘NextCloud步骤及使用(基于LAMP)

    简介:Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步.共享.版本控制.团队协作等功能.它的客户端覆盖了Wind ...

  10. WKCTF RE

    WKCTF so_easy 安卓逆向,关键的check逻辑都在native层里面 主要是很多层的异或操作 除了Z3和爆破想不到其他方法了 from z3 import * src = [ 0xAE, ...