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倍.原本打算直接用这个 ...
随机推荐
- M1安装Anaconda遇到的问题
1. 安装时报错:"Anaconda3 is already installed in /opt/anaconda3. Use 'conda update anaconda3' to upd ...
- git篇-- Git在项目实操中常见的使用命令--02
Git是现代软件开发中不可或缺的版本控制工具.它能帮助开发者跟踪项目的所有变更,并与团队成员高效协作.本文将介绍一些在项目实操中常见的Git命令,帮助你更好地管理代码. 1. 初始化和配置 初始化仓库 ...
- ArcGIS for Android入门(Java):ViewPage + Fragment 底部导航栏添加地图
修改为ViewPage + Fragment 可以参考里面runoob的教程:我也是参考这个修改的:这前面的网上都有很多相应的教程,我觉得这一部分的难点主要是在Fragment里面加载地图: 在fra ...
- 【Java】在线文件预览服务 KkFileView
原来有第三方在线预览服务接口: 需要收费使用: https://view.xdocin.com/ 但是经费不足,突然撤掉服务接口,只能把KkFileView架出来使用了 KkFileView官网地址: ...
- 超简单stable_diffusion + novelai一键部署教程
视频教程地址: 超简单stable_diffusion + novelai一键部署教程 个人的启动命令: sudo docker run -it --rm -e NVIDIA_DISABLE_REQU ...
- 再谈《强化学习算法之DQN算法中的经验池的实现》 experience_replay_buffer模块的实现
去年曾写过一篇DQN经验池模块编写的博文: 强化学习算法之DQN算法中的经验池的实现,experience_replay_buffer部分的实现 最近又看到了一个经验池实现的代码,把这两个实现做了一下 ...
- Potplayer+Alist+网盘,实现网盘视频免费在线看4K杜比HDR
Potplayer+Alist+网盘,实现网盘视频免费在线看4K杜比HDR 引言 最近刷视频看到了一个方法可以通过alist挂载网盘,配合potplayer可实现超高画质免费在线观看视频,这里发一下配 ...
- 精读代码,实战进阶&实践Task2
背景 从零入门AI生图原理&实践 是 Datawhale 2024 年 AI 夏令营第四期的学习活动("AIGC"方向),基于魔搭社区"可图Kolors-LoRA ...
- 零基础学习人工智能—Python—Pytorch学习(五)
前言 上文有一些文字打错了,已经进行了修正. 本文主要介绍训练模型和使用模型预测数据,本文使用了一些numpy与tensor的转换,忘记的可以第二课的基础一起看. 线性回归 结合numpy使用 首先使 ...
- docker部署宝塔面板
环境准备: 系统 rocky:9.2 部署流程: 1.安装docker dnf -y install yum-utils yum-config-manager --add-repo http://mi ...