2009-11-03 82 views
0

我试图从他们的源代码makeGCCUbuntu 8.10在我的笔记本电脑上构建一些大型库,如BoostOpenCV。不幸的是,编译这些大型图书馆似乎对我的笔记本电脑来说是一个很大的负担(Acer Aspire 5000)。它的风扇产生了越来越高的噪音,直到突然我的笔记本电脑在没有OS正常关闭的情况下关闭。如何降低GCC的编译成本并制作?

所以我不知道如何在make和GCC的情况下降低编译成本?

我不介意如果编译需要更长的时间或更多的空间,只要它可以完成没有我的笔记本电脑关闭。

构建库的调试版本总是比构建发布版本要便宜,因为没有优化?

一般来说,是否可以只指定一部分库来安装而不是完整的库?如果以后发现需要,其余的可以建立并添加进去吗?

是否正确,如果我重新启动笔记本电脑,我可以从笔记本电脑关闭时的位置恢复编译?例如,我注意到OpenCV通过查看编译期间显示的进度百分比没有从0%重新启动,这是正确的。但我不确定Boost,因为没有明显的信息可以告诉我,编译似乎需要更长的时间。


UPDATE:

感谢,brianegge和Levy陈!如何使用GCC和/或g ++的包装器脚本?是否像为GCC或g ++定义一些别名?如何调用脚本来检查传感器,并在继续之前等待CPU温度下降?

+0

然而,有趣的是,真正的问题是你的笔记本电脑无法全速运行。 – shodanex 2009-11-03 08:17:51

+0

真正的解决方案可能是将您的笔记本电脑升级到SSD。他们很酷。 – MSalters 2009-11-03 10:33:23

回答

4

我建议创建GCC和/或g ++

#!/bin/bash 
sleep 10 
exec gcc "[email protected]" 

保存以上为 “gccslow” 什么的,然后包装脚本:

export CC="gccslow" 

或者,你可以调用脚本gcc并把它放在你的路径的前面。如果这样做,一定要在脚本中包含完整路径,否则,脚本会自动递归调用。

更好的实现可以调用脚本来检查传感器,并等待CPU温度下降后再继续。

+0

这是一个聪明的解决方案。最初,我在思考使用“nice”的方法,但它没有任何帮助,因为无论如何CPU会一直很忙。 – 2009-11-03 06:28:27

+0

谢谢,brianegge!你如何使用gcc和/或g ++的包装脚本?是否像为gcc或g ++定义一些别名?如何调用脚本来检查传感器,并在继续之前等待CPU温度下降? – Tim 2009-11-03 07:12:14

2

对于你的后一个问题:写得很好的Makefile会将依赖关系定义为directed a-cyclical graph (DAG),并且它会尝试通过按照DAG的顺序编译它们来满足这些依赖关系。因此,当编译文件时,依赖性得到满足,不需要再次编译。

但是,它可以是tricky to write good Makefiles,因此有时候作者会诉诸暴力方法,并从头开始重新编译所有内容。

对于你的问题,对于这样众所周知的库,我将假定Makefile编写正确,并且构建应该从最后一个操作恢复(需要重新扫描DAG并重新计算编译顺序,那应该相对便宜)。

+0

Boost使用自己的机制(bjam)。 – MSalters 2009-11-03 10:16:56

1

而不是编译整个东西,你可以分别编译每个目标。您必须检查Makefile以识别它们。

舌头在脸颊:在编译时把笔记本电脑放到冰箱里怎么样?