从我所读到的能够使用带有distcc的泵模式要求你将make封装在pump
脚本中.但是,我没有在我的路径中,我找不到它作为一个包或包含在Cygwin 的distcc包中.
但是,当我使用distcc进行编译并使用distccmon-text来监视联系的主机及其阶段时,我清楚地看到其中一些主机有时处于预处理阶段.我认为所有预处理都是在不使用泵模式时在执行make脚本的客户端上完成的.并且泵模式的整个想法是在远程主机上进行预处理(因此需要相同的包含文件).
这让我很困惑.我的主要问题是:究竟是什么做的阶段:启动,阻止,连接,预处理,瞬移,发送,接收和完成的distcc是什么意思?
并且作为一个子问题:如何在Cygwin中使用带distcc的泵模式?
distcc的各个阶段究竟是什么意思?
好吧,这很令人尴尬,但我只是在网上浪费了四个小时试图回答这个问题.下次我将拉动源并查看它.但是,你提出了一个好点:令人惊讶的是这不是现成的信息.
这些是我的遗产 (因为我不想承认我浪费了四个小时没有回答这个问题!):
flock
"文件有时阻止注意:由于谷歌的"泵模式"算法,在客户端(运行distcc
)和志愿者(运行distccd
)之间实际上存在相当多的"握手" .首先,在泵模式下,所有预期"需要"的标头被捆绑,压缩并推送给志愿者(在客户端机器上将其解压缩到本地镜像中).但是,似乎志愿者和客户之间的某些进一步通信可以根据需要逐步转移其他报头,这样就可以解释上面列出的"更丰富"的通信阶段/状态.
Run Code Online (Sandbox Code Playgroud)Am I already using pump mode?
我非常怀疑它,因为你没有通过包装编译选项来配置它make
或scons
(运行Google算法来预测用于捆绑和传输给志愿者的标题用法),你也找不到"泵"脚本.但是,我无法解释你Preprocess
在志愿者身上看到的"状态".(您不是指客户端上的"预处理"状态,对吗?这完全可以理解,因为默认情况下预处理在客户端上.)
相反,我想执行使得它可能是硬盘状态机将通过所有国家,其中包括"预处理"移动,甚至在没有预处理的事,它进入到下一状态之前.例如,即使它没有在志愿者方面进行预处理,distccd也会收到源文件,将其写入磁盘,然后启动编译器.如果您使用的是Cywin,那么这些并不是即时的,特别是如果它是一个大型源文件(特别是在其中包含所有标题之后).因此,您可能会看到"预处理"阶段,直到它手动启动编译操作本身的下一个阶段.
嘿......我没有看到明显的"编译"阶段,所以"预处理"阶段可以体现"编译"或"预处理和编译"(因为这些阶段通常在许多编译器中组合在一起)是可能的. .
对不起 - 我只是在猜测.
我如何在Cygwin中使用泵模式?
我没有尝试过,但它应该是可能的.显然,最常见的问题Cygwin
是某些Windows编译器在Cygwin下运行TMPDIR
时无法处理默认设置distcc
.解决方法是把东西放进export TMPDIR=c:/temp
去/etc/profile
常见问题解答可以提供更多帮助:http: //distcc.googlecode.com/svn/trunk/doc/web/faq.html
归档时间: |
|
查看次数: |
981 次 |
最近记录: |