作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有多个文件(>300 个目标文件),它们需要用“ld”命令链接。现在,我浪费了很多时间,等待链接过程完成(这个过程并不总是会成功)。
我有下一个问题:我可以使用“分而治之”的方法进行链接吗?将每对目标文件(例如 objfile1.o 和 objfile2.o)链接到单个目标文件(例如 objfile1-2.o)中。在它为每一对对象应用这个方案之后。此外,链接上一阶段获得的每一对对象,依此类推。最后,将几个对象(可能是一对)链接到一个结果文件中。
我可以使用此方案进行链接(使用 ld)吗?
最佳答案
二进制拆分可能不是一个好主意,但你可能可以通过将应用程序分解成几个共享对象,并链接到那些。链接时针对共享对象,链接器实际上不必将数据复制到可执行文件中,但只检查共享对象确实定义了所需的符号。
不过,300 个目标文件并不多,应该不会减慢速度降低那么多,至少在现代系统中,至少如果他们在本地驱动器上。 (回到过去,当一切都在远程驱动器上,我们过去常常设置我们的makefiles 以便链接阶段在文件服务器上运行,而不是在我们的本地机器上。这可以加快速度10 倍或更多。)
关于c++ - 链接器的分治法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383628/
我是一名优秀的程序员,十分优秀!