问题标签 [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 投票
0 回答
66 浏览

makefile - 在 CMAKE for Protobuf 中使用 distcc 时未定义的引用

我可以直接 cmake protobuf,但想通过 distcc

并且一直在抛出错误undefined reference to

我添加CXXFLAGS="-static-libstdc++"到配置并触发了cmake。仍然得到同样的错误

有任何想法吗?如果您需要更多信息,请与我们联系

0 投票
1 回答
486 浏览

linux - 如何使用 make & kubernetes 实现 distcc?

我正在尝试使用 docker 和 kubernetes 为我的编译实现 distcc。如何动态提供容器的 IP 地址?

0 投票
2 回答
1497 浏览

gcc - 如何使用 distcc 仅远程预处理和编译所有内容?

背景:

  • 我有一个 128 核的服务器,我想将它用作构建服务器。
  • 我有一堆客户端机器,它们与不太新且不太强大的 PC 配合使用。(无法升级!不在我的控制范围内。)

我做了什么:

  • 我遵循了distcc 文档
  • 并在服务器上安装了具有完全相同编译器版本、相同 distcc 版本的虚拟机——与客户端机器上的发行版基本相同。
  • 配置客户端和服务器后,我可以远程构建。我可以使用该distccmon-text工具验证这一点。我可以在服务器上看到,distcc 守护程序启动了 8 个线程,它们正在等待构建作业的到来。这是很好的第一步。您可以确定下面的输出。

在此处输入图像描述

  • 第二步:由于客户端机器是双核机器,而服务器提供 128 核,并且并非所有客户端都会同时编译,我想将尽可能多的构建卸载到构建服务器。

问题:

  1. 第一个问题: distcc,无论我如何尝试配置它,总是尝试在客户端和服务器上平均分配构建作业。即使我的配置文件如下所示:

根据distcc 文档,应该为构建服务器提供更高的优先级,并为 localhost 提供较低的优先级,因为它位于列表的后面。此外,它应该为构建服务器提供 8 个作业,为 localhost 提供 0 个作业。但不,这不会发生。在键入make -j8它尝试做的是在 localhost 上启动 4 个线程,在远程启动 4 个线程。不好。您可以从下图中看到这一点。

在此处输入图像描述

  1. 第二个问题:您还会注意到预处理是在本地机器上完成的。为此,distcc 附带了一个工具。它被称为“distcc-pump”或泵模式,可以这样使用。

不幸的是,无论泵模式与否,预处理都发生在 上localhost,如上图所示。伤心。

注意:使用我在此处列出的配置distcc的程序在任何时候都不会在服务器和客户端上抛出任何错误或警告。

版本:

  • GCC 4.4.5
  • distcc 3.2rc1.2

(在有人建议 - “升级软件!”之前,更新版本对我来说很可能是不可能的。无论如何,这个版本的 distcc 提供了我需要的功能。另外,我可以升级服务器虚拟机,但是会有编译器客户端和服务器之间的版本不匹配。我无法升级的客户端。)

任何关于如何改进此设置/(解决问题)的建议和反馈都非常受欢迎。

0 投票
0 回答
916 浏览

c++ - 为什么 distcc 的 clang-tidy 这么慢?

在我的项目中,我能够使用 ninja 驱动 gcc 与 distcc 和 ccache 进行构建,并获得非常好的编译时间。

一旦我启用了 clang-tidy,distcc 分发一次只分发两个作业,性能显然很糟糕。

有谁知道是否存在已知问题让 clang-tidy 与 distcc 一起工作,或者这只是我遇到的一些配置问题或命令序列问题?

这是在 Ubuntu 16.04、gcc 5.4、clang-tidy 6.0、cmake 3.12.1 上运行的

编辑:

如果没有实际的命令行,问题就不清楚

(由于我的雇主,不能分享太多的实际命令,但这应该给出一个想法)

该行实际上指出问题在于命令的启动器部分的构建方式。

我们如何创建这样一个混乱的命令?嗯......这就是我们在我们的CMakeLists.txt

那么......使用这两个部分为命令部分生成合理输出的正确方法是什么--launcher?我认为的最终目标更像是--launcher="/usr/bin/distcc /usr/bin/ccache".

0 投票
1 回答
118 浏览

embedded - 对非 gcc 工具的 CCACHE 和 DISTCC 支持?

我们正在寻找方法来加快我们的项目的编译速度,该项目使用 Keil、Xtensa 和可能的另一个非 gcc 编译器工具,用于芯片中的第 3 种内核。

我一直在搜索“keil ccache”或“交叉编译 ccache”,但一切(大部分)都归结为 gcc 和一些非常古老的项目,这些项目涉及在 ccache 的一个分支中支持其他工具链。

有谁知道这是一个愚蠢的差事,还是它无处不在以至于没有理由问这个问题?我的 google-fu 让我失望了,所以我只是没有找到关于我需要做些什么才能使其与非 gcc 工具一起工作的信息。

FWIW,GCC 是不可能的,因为它不支持我们的自定义 Xtensa 或 DSP 处理器。

如果不清楚我在问什么:CCACHE 和/或 DISTCC 是否支持非 gcc 工具集。如果是这样,我需要做些什么特别的事情还是应该“正常工作”?

0 投票
1 回答
1273 浏览

linux - linux内核恐慌无法处理内核NULL指针取消引用

我正面临一些内核恐慌的问题,但我不知道如何找到哪个软件正是导致此问题的原因。我正在尝试使用 distcc 软件在远程主机上编译一些软件,但是由于这个问题,我正在编译的机器正在停机。

你能指出我应该从哪里开始寻找吗?什么可能导致这个问题?我应该使用哪些工具?

这是内核恐慌输出:

0 投票
1 回答
96 浏览

makefile - distcc - 是否存在需要同步网络文件系统的情况

两个简化的 makefile

生成文件1

生成文件2

两个 makefile 具有相同的功能。

由于on的依赖 两个 makefile 可以并行运行。t2 t1

但是,有一个关键的区别可能?/确实?在分布式构建方面有所作为。

makefile1中,t2直接依赖于a.txt与目标本身的名称相同的工件a.txt。但是,在makefile2中,虽然配方和工件t1与 for 相同a.txt,但目标的名称不是a.txt

这种差异很关键,因为gnu make(我假设distcc)不解析配方 - 也不在运行时分析文件系统 - 以确定给定目标的所有工件。在makefile2中,gnu make不会在a.txt和之间创建任何关系t1

当构建以make -j并行而不是分布式的方式完成时,这种差异是无关紧要的,因为所有make目标都在同一台机器上运行,即所有make实例都访问同一个文件系统。

但是让我们考虑一下可以做什么?/做什么?如果两个目标构建在两台不同的机器上,则在分布式构建期间发生

在这两个 makefile 中,配方t2将在a.txt/配方之后运行t1

但是,在makefile1t2中, on的依赖a.txt是明确的,即distcc 知道make t2在单独的机器上,它必须将文件发送a.txt到该单独的机器。

问题

  1. 如果makefile2使用 运行distcc,没有同步的分布式文件系统,并且在另一台机器上t2maked,是否会出现构建错误,因为a.txt另一台机器上不存在?
  2. 分布式 Linux 文件系统有哪些选项?
0 投票
3 回答
711 浏览

makefile - 为 makefile 配置 distcc

我正在测试distcc,我发现这个教程很容易理解,我应该说我能够编译llvm使用CMake + NinjaCMake + Makefiles使用distcc并且docker没有问题。因为我对 Makefiles 特别感兴趣,所以我查看了生成的文件,CMake + Ninja我所看到的只是distcc作为前缀添加到编译器(例如distcc /usr/bin/gcc)。所以我想,如果我只使用 Makefiles 创建一个小项目,我可能会添加distcc并且事情会神奇地工作。好吧,看起来我错过了一些东西,因为我得到的只是:

通过运行llvm示例,我放弃了所有docker连接和distcc配置问题,我尝试在互联网上搜索任何想法/示例,但大多数人使用CMake的不是我的情况。欢迎提出建议,我的演示项目基于我正在从事的真实项目,所以基本上就是Makefile这样。

我不知道我错过了什么...

版本

仅供参考:

0 投票
1 回答
87 浏览

c++ - 使用 distcc 编译不会分发到其他系统/从站不工作

我遇到了一个关于 discc 的问题,它是一个编译作业分发工具,其中 ( cmake) 构建没有分发到其他指定的系统(如 中所定义~/.distcc/host)。

我像这样配置了构建系统:

对于其他(类似)构建,结果证明它distcc工作得很好,因此配置正确。

可能是什么问题?

0 投票
1 回答
40 浏览

distcc - 使用 distcc 运行构建时如何检查列出的所有服务器是否实际正在使用

我是第一次使用 distcc 并且已经阅读了自述文件。

要设置我有三个 Ubuntu 服务器:主服务器和客户端:

根据自述文件,听起来我们需要在所有机器上安装它们。我已经完成了。 https://github.com/distcc/distcc/blob/master/INSTALL

在所有三台服务器上运行命令:

sudo apt-get install gcc make python3 python3-dev libiberty-dev

./autogen.sh ./configure 安装

他们完成了,没有任何错误。

在三台机器上创建 ssh 密钥,然后添加到授权主机部分。做了一个 ssh 并确认他们能够从主系统登录到代理系统而无需任何密码

现在,我从主服务器运行以下命令,指向两个两个客户端:

创建了一个 hello world make 文件:

使用以下命令运行构建

所以在这里它看起来确实像预期的那样工作。

按照文档中的说明运行命令:

问题:

谢谢