首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何避免makefile重新链接

在编译大型项目时,使用Makefile可以自动化构建过程,但是在每次编译时都重新链接所有的目标文件可能会导致编译时间过长。为了避免这种情况,可以采取以下几种方法:

  1. 使用依赖关系:在Makefile中明确指定目标文件的依赖关系。这样,只有当依赖的文件发生变化时,才会重新链接。可以通过使用伪目标(.PHONY)来定义依赖关系,确保每次都会执行。
  2. 使用增量编译:增量编译是一种只编译发生变化的源文件的方法。可以通过比较源文件的时间戳来确定哪些文件需要重新编译。可以使用工具如GCC的-MD选项来自动生成依赖关系,并在Makefile中使用这些依赖关系。
  3. 使用静态库:将一些不经常变动的代码编译成静态库,然后在链接时使用静态库。这样,只有当静态库发生变化时,才需要重新链接。
  4. 使用动态链接库:将一些经常变动的代码编译成动态链接库,然后在链接时使用动态链接库。这样,只有当动态链接库发生变化时,才需要重新链接。
  5. 使用增量链接:增量链接是一种只链接发生变化的目标文件的方法。可以通过比较目标文件的时间戳来确定哪些文件需要重新链接。可以使用工具如Gold链接器的--incremental选项来实现增量链接。

总结起来,避免Makefile重新链接的方法包括使用依赖关系、增量编译、静态库、动态链接库和增量链接。根据具体的项目需求和情况,选择适合的方法来提高编译效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

makefile使用.lds链接脚本以及 @,^, $,< 解析

先来分析一个简单的.lds链接脚本 ---- 例1,假如现在有head.c init.c nand.c main.c这4个文件: 1.1 首先创建链接脚本nand.lds: 1 SECTIONS {...1.2 制作Makefile objs := head.o init.o nand.o main.o nand.bin : $(objs)   arm-linux-ld -Tnand.lds... 又该如何安排它们在可执行文件中的顺序?...这里就需要将多个目标文件的.text、.data和.bss等段链接在一起而链接脚本文件是告诉链接器从什么地址开始放置这些段 .text:代码段,存放程序执行代码的一块内存 .data:读/写数据段,存放已初始的全局变量或静态变量的一块内存...SECTIONS :最重要的,最基本的,也是最主要的命令,它告诉链接如何把输入文件的各个section输出到目标文件中的各个section中去。

77420
  • makefile使用.lds链接脚本以及 $@ ,$^, $,< 解析

    先来分析一个简单的.lds链接脚本 例1,假如现在有head.c init.c nand.c main.c这4个文件: 1.1 首先创建链接脚本nand.lds: 1 SECTIONS { 2 firtst...1.2 制作Makefile objs := head.o init.o nand.o main.o nand.bin : $(objs)   arm-linux-ld -Tnand.lds... 又该如何安排它们在可执行文件中的顺序?...这里就需要将多个目标文件的.text、.data和.bss等段链接在一起而链接脚本文件是告诉链接器从什么地址开始放置这些段 .text:代码段,存放程序执行代码的一块内存 .data:读/写数据段,存放已初始的全局变量或静态变量的一块内存...SECTIONS :最重要的,最基本的,也是最主要的命令,它告诉链接如何把输入文件的各个section输出到目标文件中的各个section中去。

    1.9K100

    如何避免「脸红」

    自己在国外找到下面这篇关于「避免脸红」的文章,顺便翻译过来的,主要是从 2 个方面来说,如何改变自己脸红的状态。第一个是自己不可控的时候瞬间脸红,还有一个是其他长期脸红的,如过敏、疾病、血压高。...正视自己的这个不好的情况,如何去改正他才是我目前该做的。我觉得它有时候真的影响我的社交活动和其他谈话。...如果您觉得脸红会妨碍正常的社交互动并且您想要解决问题,请继续阅读有关如何避免脸红的一些提示。...如果可能的话,尽量避免脸红。找出你脸红的时候。是在你生气的时候还是在你紧张的时候?是在你看某个人或想到某个人的时候?当你被置于聚光灯下时?...记录自己最爱脸红的几个情况,多去克服和避免脸红。

    1.2K30

    makefile使用.lds链接脚本以及 常用命令 解析

    1.分析一个简单的.lds链接脚本   例1,假如现在有head.c init.c nand.c main.c这4个文件: 1.1 首先创建链接脚本nand.lds: 1 SECTIONS { 2...又该如何安排它们在可执行文件中的顺序?   ...这里就需要将多个目标文件的.text、.data和.bss等段链接在一起而链接脚本文件是告诉链接器从什么地址开始放置这些段 .text: 代码段,存放程序执行代码的一块内存 .data: 读/写数据段...SECTIONS :最重要的,最基本的,也是最主要的命令,它告诉链接如何把输入文件的各个section输出到目标文件中的各个section中去。 2....  对于一个普通的linux设备驱动模块,以下是一个经典的makefile代码,使用下面这个makefile可以完成大部分驱动的编译,使用时只需要修改一下要编译生成的驱动名称即可。

    2K20

    arm裸板驱动总结(makefile+lds链接脚本+裸板调试)

    而裸板驱动的步骤如下所示: 1.写makefile 2.写lds链接脚本 (供makefile调用) 3.写真正要执行的文件代码,比如初始化nand,sdram,串口等 为什么要写lds链接脚本?....写makefile (参考makefile初步制作:http://www.cnblogs.com/lifexy/p/7065175.html) 在写裸板之前首先要来写Makefile,如下所示: objs...@初始化NAND Flash ldr sp,=0x34000000 @64Msdram,所以设置栈SP=0x34000000,避免堆栈溢出...@使用ldr命令 绝对跳转到SDRAM地址上 halt_loop: @若main函数跳出后,便进入死循环,避免程序跑飞...通过Makefile里的arm-linux  -g 来的,         -g:表示生成的编译文件里包含gdb调试信息 然后我们将上面第1节的Makefile修改,如下图: 3)使用gdb之前,需要保证

    1.4K90

    如何避免面向监狱编程?

    该站收到消息后第一时间做出响应,且对该代码库进行了【封杀】,**但是还是避免不了造成的损失,该事件导致了该站股票直接下跌百分之4,虽然网上暂时找不到关于泄漏代码员工的一个处置结果,但是想来处罚力度也不会小...某大学毕业生搭建黄色网站获刑   主角小郭,大学学学了一些网络技术,某次在一个黄色论坛里遇到了一个需要进行网页搬家的网页,在帮忙"搬家"的过程中,他发现这个是个黄色网站,于是留了个后门,他发现这个黄网每天可以通过收款链接拿到几百块钱收入...,于是他心生一计,将收款链接改为自己的,被网站管理发现后管理员将服务器关闭了。   ...**   在警察的审问中,**他交代搭建黄色网站的目的一是为了测试自己的网络架构技术,二是为了赚钱,于是他疯狂的将链接分享到各个QQ群,不断的吸收”志同道合“的道友**,他知道,只要浏览量上来,广告商就会自己来联系...** 法律法规数据库 北大法宝 五、参考资料 程序员们要小心:九类常见网络犯罪 200名程序员被抓,程序员该如何善用爬虫获取数据

    98330

    如何避免问渣问题?

    如果非得要在大学加一门课的话,我特别希望就是“如何避免问渣问题“。并且特别希望它成为必修课之一。 当然,有些人问问题其实并不是在问问题,而可能是在讽刺、挖坑(知乎里特别流行)或者秀逼格。...避免问愚蠢的问题 在提问之前,思考下这个问题是不是非常的愚蠢。尽管所有人(包括我)在内都愚蠢过,并且每个人也并不是会通晓所有领域。但是问的问题过度弱智,只会使得潜在的回答者觉得浪费智商。...避免问过于宽泛宏大的问题 我经常被问这种问题 分布式系统怎么样? java和python哪个好? 3年经验能拿多少薪酬? 在我看来,这些问题与下面的问题差不多 四川菜好吃吗?...避免问需要长篇大论才能把提问点说清楚的问题 另一个极端。“你不是说我问蠢问题吗,我就把细节都说出来“。 我用编程框架A,版本B,在操作系统C的版本D上开发。 下面是我的三个源代码。...如果你是用英文在Stack Overflow之类的地方提问,最好也要好好检查拼写语法,必要时用word的检查功能矫正一下,避免被老外吐槽。 总之一句话,将心比心。

    1.5K200

    如何避免无效压测

    一.误区 首先讲误区,每个误区我会简单的总结下,对于需要拓展的,我会在第二部分如何有效压测中去具体描述。 误区1:性能测试就是从写脚本开始。...这是个经验问题,并不需要一定做性能测试才能发现性能问题 比如接口单次调用过慢,可以trace 比如发现索引未添加,可以做执行计划 二.如何有效压测 充分的需求调研,需求调研的科学准确性决定是否能有效压测...那如何制定性能测试的指标呢?你的依据是什么呢?...比如从ELK就可以提取这些数据,我写过一篇文章,通过实际访问的频次去指定目标Tps,参考测试开发如何玩转ELK?这个我想大家都能明白了。...你需要画一个部署架构示意图,有了这张图,才能知道如何做到全貌监控,以及遇到问题从哪些服务入手。

    1K20

    如何避免无效压测

    一.误区 首先讲误区,每个误区我会简单的总结下,对于需要拓展的,我会在第二部分如何有效压测中去具体描述。 误区1:性能测试就是从写脚本开始。...这是个经验问题,并不需要一定做性能测试才能发现性能问题 比如接口单次调用过慢,可以trace 比如发现索引未添加,可以做执行计划 二.如何有效压测 充分的需求调研,需求调研的科学准确性决定是否能有效压测...那如何制定性能测试的指标呢?你的依据是什么呢?...比如从ELK就可以提取这些数据,我写过一篇文章,通过实际访问的频次去指定目标Tps,参考测试开发如何玩转ELK?这个我想大家都能明白了。...你需要画一个部署架构示意图,有了这张图,才能知道如何做到全貌监控,以及遇到问题从哪些服务入手。

    57520
    领券