首先,我的最终目标是为arm
交叉编译 OpenCV ,所以我尝试了两种方法,但到目前为止还没有成功。
此问题与使用distcc
进行编译有关,使用target
运行make
命令,但利用强大的服务器来加快速度。
基本上,target
似乎没有将作业发送到slave
服务器。
我在两台计算机上安装了distcc
(apt-get install distcc
)
据我了解,守护进程只需要在slave上运行。
我在/etc/distcc/hosts
中设置了主机:在该文件中,target
位于192.168.10.45
slave
和192.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相互通信。
我在这里缺少什么?
答案 0 :(得分:1)
您必须在主(/etc/distcc/hosts
)计算机上定义编译主机列表(通过DISTCC_HOSTS
文件或通过target
环境变量)。通过在主distcc --show-hosts
上运行来检查主机列表。
同时指定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.