调试distcc:似乎没有作业在slave上运行

debugging distcc: no job seems to run on slave

本文关键字:作业 slave 运行 distcc 调试      更新时间:2023-10-16

首先,我的最终目标是为arm交叉编译OpenCV,所以我尝试了两种方法,但到目前为止还没有成功。

这个问题是关于使用distcc进行编译,使用target运行make命令,但利用强大的服务器来加快速度。

基本上,target似乎没有向slave服务器发送作业。

我在两台机器上都安装了distcc (apt-get install distcc)

据我所知,守护进程只需要在从属服务器上运行。我在/etc/distcc/hosts中设置了主机:在该文件中,我有target192.168.10.45slave192.168.10.34的ip

我用

运行守护进程

distccd --daemon --allow 192.168.10.45

允许target

with ps aux | grep distcc

我可以看到32个distccd实例正在运行。

如果我使用

netstat -pant | grep distcc

我看到守护进程正在监听

现在,如果我在/var/log/distccd.log处跟踪日志文件,那里没有任何内容,也没有发生任何事情

当我使用

target上运行作业时

make -j33 CC=distcc

它似乎运行良好,但我看到没有发生在slave

ufw被禁用,两台机器ping并可以通过ssh相互通信。

我在这里错过了什么?

  1. 必须在主(target)机器上定义编译主机列表(通过/etc/distcc/hosts文件或通过DISTCC_HOSTS环境变量)。在主distcc --show-hosts上运行查看主机列表

  2. 指定distcc作为c++的编译器:

    make -j33 CC=distcc CXX=distcc
    

你跑了吗?

sudo update-distcc-symlinks

官方安装文档目前省略了这一步。我也有同样的症状,在查找日志时遇到了一些麻烦,但最终发现我必须在一个环境变量中指定日志记录:

DISTCCD_OPTS="${DISTCCD_OPTS} --log-file /dev/shm/distccd.log"  

说:

(dcc_warn_masquerade_whitelist) CRITICAL! /usr/local/lib/distcc not found. You must see up masquerade (see distcc(1)) to list whitelisted compilers or pass --enable-tcp-insecure. To set up masquerade automatically run update-distcc-symlinks.