问题标签 [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.
makefile - 在 CMAKE for Protobuf 中使用 distcc 时未定义的引用
我可以直接 cmake protobuf,但想通过 distcc
并且一直在抛出错误undefined reference to
我添加CXXFLAGS="-static-libstdc++"
到配置并触发了cmake。仍然得到同样的错误
有任何想法吗?如果您需要更多信息,请与我们联系
linux - 如何使用 make & kubernetes 实现 distcc?
我正在尝试使用 docker 和 kubernetes 为我的编译实现 distcc。如何动态提供容器的 IP 地址?
gcc - 如何使用 distcc 仅远程预处理和编译所有内容?
背景:
- 我有一个 128 核的服务器,我想将它用作构建服务器。
- 我有一堆客户端机器,它们与不太新且不太强大的 PC 配合使用。(无法升级!不在我的控制范围内。)
我做了什么:
- 我遵循了distcc 文档。
- 并在服务器上安装了具有完全相同编译器版本、相同 distcc 版本的虚拟机——与客户端机器上的发行版基本相同。
- 配置客户端和服务器后,我可以远程构建。我可以使用该
distccmon-text
工具验证这一点。我可以在服务器上看到,distcc 守护程序启动了 8 个线程,它们正在等待构建作业的到来。这是很好的第一步。您可以确定下面的输出。
- 第二步:由于客户端机器是双核机器,而服务器提供 128 核,并且并非所有客户端都会同时编译,我想将尽可能多的构建卸载到构建服务器。
问题:
- 第一个问题: distcc,无论我如何尝试配置它,总是尝试在客户端和服务器上平均分配构建作业。即使我的配置文件如下所示:
根据distcc 文档,应该为构建服务器提供更高的优先级,并为 localhost 提供较低的优先级,因为它位于列表的后面。此外,它应该为构建服务器提供 8 个作业,为 localhost 提供 0 个作业。但不,这不会发生。在键入make -j8
它尝试做的是在 localhost 上启动 4 个线程,在远程启动 4 个线程。不好。您可以从下图中看到这一点。
- 第二个问题:您还会注意到预处理是在本地机器上完成的。为此,distcc 附带了一个工具。它被称为“distcc-pump”或泵模式,可以这样使用。
不幸的是,无论泵模式与否,预处理都发生在 上localhost
,如上图所示。伤心。
注意:使用我在此处列出的配置distcc
的程序在任何时候都不会在服务器和客户端上抛出任何错误或警告。
版本:
- GCC 4.4.5
- distcc 3.2rc1.2
(在有人建议 - “升级软件!”之前,更新版本对我来说很可能是不可能的。无论如何,这个版本的 distcc 提供了我需要的功能。另外,我可以升级服务器虚拟机,但是会有编译器客户端和服务器之间的版本不匹配。我无法升级的客户端。)
任何关于如何改进此设置/(解决问题)的建议和反馈都非常受欢迎。
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"
.
embedded - 对非 gcc 工具的 CCACHE 和 DISTCC 支持?
我们正在寻找方法来加快我们的项目的编译速度,该项目使用 Keil、Xtensa 和可能的另一个非 gcc 编译器工具,用于芯片中的第 3 种内核。
我一直在搜索“keil ccache”或“交叉编译 ccache”,但一切(大部分)都归结为 gcc 和一些非常古老的项目,这些项目涉及在 ccache 的一个分支中支持其他工具链。
有谁知道这是一个愚蠢的差事,还是它无处不在以至于没有理由问这个问题?我的 google-fu 让我失望了,所以我只是没有找到关于我需要做些什么才能使其与非 gcc 工具一起工作的信息。
FWIW,GCC 是不可能的,因为它不支持我们的自定义 Xtensa 或 DSP 处理器。
如果不清楚我在问什么:CCACHE 和/或 DISTCC 是否支持非 gcc 工具集。如果是这样,我需要做些什么特别的事情还是应该“正常工作”?
linux - linux内核恐慌无法处理内核NULL指针取消引用
我正面临一些内核恐慌的问题,但我不知道如何找到哪个软件正是导致此问题的原因。我正在尝试使用 distcc 软件在远程主机上编译一些软件,但是由于这个问题,我正在编译的机器正在停机。
你能指出我应该从哪里开始寻找吗?什么可能导致这个问题?我应该使用哪些工具?
这是内核恐慌输出:
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
到该单独的机器。
问题
- 如果makefile2使用 运行
distcc
,没有同步的分布式文件系统,并且在另一台机器上t2
是make
d,是否会出现构建错误,因为a.txt
另一台机器上不存在? - 分布式 Linux 文件系统有哪些选项?
makefile - 为 makefile 配置 distcc
我正在测试distcc,我发现这个教程很容易理解,我应该说我能够编译llvm
使用CMake + Ninja
和CMake + Makefiles
使用distcc
并且docker
没有问题。因为我对 Makefiles 特别感兴趣,所以我查看了生成的文件,CMake + Ninja
我所看到的只是distcc
作为前缀添加到编译器(例如distcc /usr/bin/gcc
)。所以我想,如果我只使用 Makefiles 创建一个小项目,我可能会添加distcc
并且事情会神奇地工作。好吧,看起来我错过了一些东西,因为我得到的只是:
通过运行llvm
示例,我放弃了所有docker
连接和distcc
配置问题,我尝试在互联网上搜索任何想法/示例,但大多数人使用CMake
的不是我的情况。欢迎提出建议,我的演示项目基于我正在从事的真实项目,所以基本上就是Makefile
这样。
我不知道我错过了什么...
版本:
仅供参考:
c++ - 使用 distcc 编译不会分发到其他系统/从站不工作
我遇到了一个关于 discc 的问题,它是一个编译作业分发工具,其中 ( cmake
) 构建没有分发到其他指定的系统(如 中所定义~/.distcc/host
)。
我像这样配置了构建系统:
对于其他(类似)构建,结果证明它distcc
工作得很好,因此配置正确。
可能是什么问题?
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 文件:
使用以下命令运行构建
所以在这里它看起来确实像预期的那样工作。
按照文档中的说明运行命令:
问题:
谢谢