Makefile优化编译速度
并行编译:使用 make -j 命令来进行并行编译,可以加快编译速度。-j 后面可以跟一个数字,表示并行编译的线程数。
懒惰计算:使用 .PHONY 规则来避免无谓的重新编译。该规则告诉 make,这个规则不需要实际的文件来作为依赖,每次都要重新执行。例如:
.PHONY: all
all: hello.c
gcc -o hello hello.c
- 禁止隐式规则:如果你知道你并不需要使用 make 提供的隐式规则,可以使用 .SUFFIXES 规则禁止掉它们。例如:\
.SUFFIXES:
- 指定编译器选项:使用 -O 开启编译器优化选项,可以提高程序执行速度。例如:
CFLAGS=-O
all: hello.c
gcc $(CFLAGS) -o hello hello.c
- 分离头文件:将头文件和源文件分离,可以避免重复编译,减少编译时间。例如:
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
- 使用预编译头文件:将常用的头文件编译成单独的预编译头文件,可以加快编译速度。例如:
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
- 指定输出目录:将目标文件存放在一个独立的目录中,可以避免编译产生的文件污染源代码目录。例如:
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优化编译速度的更多相关文章
- Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度
原文:Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度 嫌项目编译太慢?不一定是 Visual Studio 的问题,有可能 ...
- Android Studio优化编译速度
随着Android Studio的不断完善,其安卓开发者阵营也基本从Eclipse转移到了Android Studio,毕竟Android Studio是谷歌亲力亲为开发的官方开发软件.不过其最重要的 ...
- webpack2使用ch6-babel使用 处理es6 优化编译速度
1 目录结构 安装依赖 cnpm install --save-dev babel-loader babel-core babel-preset-env babel-preset-latest &qu ...
- Linux Makefile 编译速度的优化【转】
转自:https://blog.csdn.net/QQ1452008/article/details/51851801 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- 使用ant优化android项目编译速度,提高工作效率
1.Android项目编译周期长,编译项目命令取消困难 2.在进行Android项目的编译的同时,Eclipse锁定工作区不能进行修改操作 3.在只进行资源文件的修改时,Eclipse对资源文件的修改 ...
- 微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结
1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶 ...
- 优化MyEclipse编译速度慢的问题、build、project clean 慢
优化MyEclipse编译速度慢的问题(重点是1) 1 .关闭MyEclipse的自动validation windows > perferences > myeclipse > v ...
- dWebpack编译速度优化实战
当你的应用的规模还很小时,你可能不会在乎Webpack的编译速度,无论使用3.X还是4.X版本,它都足够快,或者说至少没让你等得不耐烦.但随着业务的增多,嗖嗖嗖一下项目就有上百个组件了,也是件很简单的 ...
- Android Sutido 编译速度优化
虽然Android Studio 此时已经更新到了Android Studio 2.1版本,build 版本android-studio-bundle-143.2739321.但是在安装该版本都是根据 ...
- Java动态编译优化——提升编译速度(N倍)
一.前言 最近一直在研究Java8 的动态编译, 并且也被ZipFileIndex$Entry 内存泄漏所困扰,在无意中,看到一个第三方插件的动态编译.并且编译速度是原来的2-3倍.原本打算直接用这个 ...
随机推荐
- JDK安装教程(Windows)
Windows 端: 1. 安装 首先进入官网:https://www.oracle.com/java/technologies/javase-downloads.html 因为我已经安装了 JDK8 ...
- 4、SpringMVC之获取请求参数
4.1 环境搭建 创建名为spring_mvc_demo2的新module,过程参考3.1节 4.1.1.创建请求控制器 package org.rain.controller; import org ...
- 【Vue】Re09 Webpack 第一部分(介绍、安装、配置)
一.Webpack的用途 webpack要解决的是统一网页资源的问题 前端工程化出现了很多问题,就是兼容性,浏览器所不能解析 所以需要一个打包,转换等方式处理 二.安装描述介绍 下载安装NodeJS, ...
- NVIDIA具身机器人实验室 —— GEAR —— Generalist Embodied Agent Research —— NVIDIA机器人实验室
相关: https://www.youtube.com/watch?v=jbJPG2H8hn4
- 如何在多台Linux系统主机上实现ssh免密访问——成公钥文件id_rsa.pub(数字签名RSA)
假设共有三台Linux主机,为matser,slave1,slave2,现在要实现master主机可以ssh免密访问master主机自身以及slave1.slave2. 原理: 主机调用秘钥生成命令, ...
- 国产操作系统——银河麒麟V10 SP1使用小结
前几天看新闻国产操作系统银河麒麟有了新的更新于是上手搞了一个. ========================================================= 该系统自带驱动,其中 ...
- LVGL btn组件
/************************************************* * * file name:widget_line.c * author :momolyl@126 ...
- conda 安装pytorch
配置:win 10 ,python=3.6 安装pytorch-1.1.0,cudatoolkit-9.0,torchvision-0.3.0. 出现的问题:import torch 的时候,出现了O ...
- Unreal使用GooglePAD生成AAB包,并加在fast-follow资源
1.修改obbfilter,设置需要添加到obb的pak文件 2.修改项目设置,打AAB包 3.cook stage生成所有Paks文件 4.将部分pak文件拷贝到Intermediate/Andro ...
- CSV文件导出详细讲解
一.准备jar 如下所以放入maven配置文件中 二.controller层 三.SERVICE层 四.CsvUtil文件 /** * csv文件导入导出 */public class CsvUti ...