问题标签 [distcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
738 浏览

makefile - 使用 distcc 在 Raspberry pi 上编译 gnuradio

我想用 Raspbian wheezy 的新副本在 Raspberry Pi 上编译 gnuradio。我有一个带有 i7 的 distcc 设置来卸载 RPi 的工作。当我使用它时,它适用于一个简单的测试文件

我可以看到任务是在另一台计算机的日志中完成的。但是,当我想构建 gnuradio 并调用“make”命令时,distcc 甚至不会在详细模式下产生任何输出。

产生这个:

并继续在本地主机上构建。

有没有解决的办法 ?

0 投票
1 回答
324 浏览

gcc - 包含破坏了 GCC 的转换空诊断,并且 distcc 修复了它。(包括最小的例子)

这个问题实际上包含两个观察结果。

第一:包含使 GCC至少在某些情况下<atomic>不会发出诊断信息。conversion-null
例如,考虑文件noerror.cpp

error.cpp除了注释掉包含之外,这个文件 ( ) 是相同的:

如果我尝试编译error.cpp,我会收到预期的错误:

如果我省略#pragma并编译,我会得到相同的结果-Werror。这也是意料之中的:根据 GCC 文档,默认情况下会启用警告。

令我惊讶的是,我可以毫无错误地编译noerror.cpp。即使<atomic>标头通过 抑制警告和错误#pragma GCC diagnostic ignore,我的代码中的显式编译指示也应该重新启用它们,但事实并非如此。

顺便说一句,clang++无论是否包含标头,都会出现预期错误:

第二:使用 distcc 运行可以恢复正确的行为
我有多个工作站。如果我尝试在其中任何一个上进行本地构建,我会遇到上述行为。但是,如果 distcc 尝试在任何远程机器上构建它,则会正确发出错误。(这就是我最初发现这个问题的方式;我们的构建很可能会使 distcc 回退到本地编译)。事实上,即使我有distccSSH 连接到我自己的机器,也会恢复正确的行为(即错误):

我不清楚如何distcc设法恢复正确的行为。

版本信息:我正在运行 Ubuntu 3.5.0-46-generic、GCC 4.8.1 和 distcc 3.1。

概括

包括<atomic>似乎打破了 GCC 的conversion-null诊断。不知何故,使用 distcc 修复它。我已经搜索过,但找不到对类似错误的任何引用。这个试点错误是一个已知问题,还是我应该提交一份 GCC 错误报告?

[编辑:代码片段来自我将其设为警告而不是错误时。粘贴更正版本]

0 投票
3 回答
1061 浏览

c++ - distcc 问题:它真的可以加快编译速度吗?

我为一个小型 C++ 项目安装了 distcc 和 Cmake。我有两台机器:所以有一台在本地完成编译的客户端和一台在“远程”完成编译的服务器。

我已按照说明安装和配置 distcc,但使用以下简单步骤编译项目时没有发现任何改进:

我检查了客户端和服务器机器上的所有内容,并没有看到任何特殊行为。日志中的所有返回代码均为 0(OK),并且没有错误消息。这就像一切都在工作,但没有时间增益。我还安装了 distccmon-gui 工具并检查了两台机器在编译期间是否都在使用。

最后我确实用4台机器试了一下,得到了同样的结果,也就是0提升。

唯一看起来很奇怪的是通信时间:

即使在 localhost 机器上,每个执行的作业的延迟也约为 200 毫秒。

最后,当我使用 distcc 时会有一点时间开销,我将其归因于服务器和客户端之间的通信。

有没有人已经对 distcc 有过这样的问题并且知道我应该去哪里看,或者我应该去哪里调查?我真的坚持这一点,并相信 distcc 应该给我带来额外的性能!

有任何想法吗 ?请帮助:=)

谢谢

0 投票
2 回答
4592 浏览

c++ - DistCC 和 CMake - 运行 make 时在本地和分布式构建之间进行选择

我的项目是使用 CMake 构建的,并使用 DistCC + GCC 编译。

我将编译器配置如下:

要构建项目,我只需运行“ cmake ”,然后运行“ make -jXX ”。

尽管 distcc 确实加快了速度,但有时我想在不分发的情况下构建 - 我希望它在机器上本地构建。

我知道我可以修改 DISTCC_HOSTS 以仅包含 localhost - 但这仍然具有 distcc 网络的开销,尽管它比其他机器的开销要快......

我也可以通过重新运行cmake并使用自定义标志修改 CMAKE_C_COMPILER 来做到这一点。

但我正在寻找一种方法,只需将标志直接添加到“make”即可。

我可以使用 CMake 技巧吗?

0 投票
2 回答
696 浏览

linux - 使用 distcc 编译内核以创建 debian 包

我已经使用 distcc 使用“make -j8 CC=distcc”命令对几个包进行分布式编译。它工作正常。但是对于通过编译内核源来创建debian包,我们使用“make-kpkg”命令来构建.deb文件。使用make-kpkg,我不能使用“CC=distcc”(这将调用分布式编译)。要构建我使用以下命令:

所以建议我并纠正我,我怎样才能在上面的命令中使用 distcc 。

0 投票
2 回答
2283 浏览

compilation - 如何在泵模式下启动 distcc

我曾尝试以泵模式启动 distcc,但由于未知原因,它无法分发预处理任务。所以我已经卸载了所有与 distcc 相关的东西,并想从头开始重做所有事情,以使 distcc 在泵模式下启动并运行。那么告诉我:需要安装哪些软件包?为了以泵模式启动 distcc 需要设置哪些环境变量?

0 投票
0 回答
467 浏览

linux - Bundler 使用 cflags / distcc 安装 Rails 4 应用程序

我正在 Raspberry Pi 上设置 Rails 4 应用程序。为了在我运行 bundle install 时加快 gems 的安装,我在我的 Linux 桌面上设置了一个 distcc 服务器(使用 ARM 交叉编译器)。

我找不到的是一种通过 CFLAGS 或其他方式传递命令以在我运行“捆绑安装”时使用 distcc 的方法。Bundler 无法识别 --with-cflags 开关。

在寻找解决方案时,我在这里找到了如何逐个宝石地执行此操作,我更喜欢一个可以通过一个命令完成的设置。

关于如何实现这一目标的任何建议?

谢谢

0 投票
0 回答
105 浏览

cygwin - distcc 写入失败:传输端点未连接

当我使用 distcc 时,它失败并显示以下消息:

dcc_writex 警告:写入失败:传输端点未连接

这不是每次都发生,有人对此有想法吗?

0 投票
0 回答
735 浏览

c++ - 使用多核机器加快编译时间

我为一个开源项目管理一个构建服务器,它经常需要重建巨大的库,在 8 逻辑核 i7 英特尔处理器上构建至少需要 30 分钟,最长需要几个小时。

最近我想知道是否有一些相对便宜的专用多核板可以用来加快编译时间,但是我的 google-fu 找不到任何东西,除了 Kickstarter 上的 Parallella,谷歌搜索似乎没有很多结果我的用例。

你知道有什么便宜的多核板可以用来加速 C/C++ 软件的编译吗?

提供多核/分布式编译的廉价按需服务可以工作,但它们不太受欢迎,因为您需要检查它们的编译器、库和其他东西是否真实,这样它们就不会在任何代码中注入任何后门你编译,这很难检查。这就是为什么我主要在寻找可以管理自己以将编译任务卸载到的多核板。

0 投票
0 回答
840 浏览

gcc - 可以使预编译的标头与 distcc 一起使用吗?

我有一个大型项目,我已经为其实现了预编译头文件。我也希望能够让它与 distcc 一起工作。根据此处的 google 代码文件中的第 4.12 节

gcc 3.3 版包括一些性能改进,使 distcc 不太立即有用。

一个是预编译的头文件,在读取一组常见的头文件后,编译器的内部状态被转储到磁盘上。这对于包含大量固定头文件的程序很有用,其中解析头文件需要大部分编译时间。目前 distcc 可以通过将 .pch 状态文件放在共享文件系统上来支持这一点。将来可能会在 distcc 中添加更好的解决方案。

我不认为使用共享文件系统对我来说是一个好的解决方案。但后来也提到了一个潜在的补丁,可以让预编译的头文件和 distcc 以更好的方式协同工作:https ://lists.samba.org/archive/distcc/2008q2/003646.html 。这将涉及DISTCC_PCH在客户端上设置(或使用编译器选项-fpch-preprocess,请参见此处),并将pch选项添加到DISTCC_HOSTS服务器。我已经尝试过了,但它似乎不起作用,所以我怀疑补丁没有集成。

distcc 在共享文件系统之上是否支持预编译头文件?或者任何合理直接的方式让技术合作?


更新:我现在有一种情况,我将预编译头文件编译用于本地构建,而对于 distcc 构建,我强制包含预编译的头文件,以便本地和 distcc 构建都编译完全相同的源。通过仔细选择预编译头文件,我可以获得比以前快 40% 的本地调试构建,而 distcc 构建仅慢 4% 左右。我希望它以某种方式将预编译的头文件和 distcc 结合起来,以通过 distcc 构建获得加速,比如 10% 或 20%,只需相当少的努力和侵入性(加速构建不是我的主要责任,此外还有企业环境 我能做的事有限)。