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