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

时间:2016-09-27 18:15:07

标签: c++ linux distcc

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

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

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

我在两台计算机上安装了distccapt-get install distcc

据我了解,守护进程只需要在slave上运行。 我在/etc/distcc/hosts中设置了主机:在该文件中,target位于192.168.10.45 slave192.168.10.34位于distccd --daemon --allow 192.168.10.45

我用

运行守护进程

target

允许ps aux | grep distcc

distccd

我可以看到netstat -pant | grep distcc正在运行的32个实例。

如果我使用

/var/log/distccd.log

我看到守护进程正在聆听

现在,如果我在target拖尾日志文件,那里什么都没有,什么都没发生

当我在make -j33 CC=distcc上用

运行工作时

slave

似乎运行良好,但我发现ufw

上没有发生任何事情

public class Converter { private static char symbols[] = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' }; public static void main(String args[]) { Converter converter = new Converter(); System.out.println(converter.convert(31, 16)); } public String convert(int number, int base) { return convert(number, base, 0, ""); } private String convert(int number, int base, int position, String result) { if (number < Math.pow(base, position + 1)) { return symbols[(number / (int) Math.pow(base, position))] + result; } else { int remainder = (number % (int) Math.pow(base, position + 1)); return convert(number - remainder, base, position + 1, symbols[remainder / (int) (Math.pow(base, position))] + result); } } } 被禁用,2台机器ping并可以通过ssh相互通信。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

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

  2. 同时指定distcc作为C ++的编译器:

    make -j33 CC=distcc CXX=distcc
    

答案 1 :(得分:0)

你跑了吗:

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.