我在两台服务器上运行了一个distccd守护进程。 一个(称为A,。12)作为主人,而另一个(称为B,.11)作为奴隶:
Settings on A:
vim ~/.distcc/hosts
# contents of ~/.distcc/hosts
localhost
192.168.1.11,cpp,lzo
Settings on B:
distccd --daemon --allow 192.168.1.12 --log-file /home/nhlee/distcc.log
"ps aux | grep distcc" to check that it's running
然后我用:
构建一些东西pump make -j xxx
它告诉我:
__________Using distcc-pump from /usr/bin
__________Using 2 distcc servers, of which only 1 support(s) pump mode
...
__________Shutting down distcc-pump include server
然而,花费的时间几乎相同。我不确定是否有办法检查哪个组件是由哪个主机编译的。
我打开显示器:
distccmon-text 1
我在两台机器上试过这个,两个都只显示空行。
我查看/var/look/messages
,但没有任何与distcc有关。
我检查了日志文件,该文件也是空的。
如何查看我的文件是如何存在的 编译?
所以我在两台机器上都检查了top,结果发现所有文件都是在master的本地(A)上编译的。不过,我不确定为什么没有任何错误。
我也尝试从〜/ .distcc / hosts中删除'localhost',但结果仍然相同。
答案 0 :(得分:1)
好的,所以我尝试了一些事情并解决了问题。我遇到了一些我也想分享的新问题。
首先,我做了
export CC=/usr/bin/distcc
export CXX=/usr/bin/distcc
让CMake知道我想使用distcc而不是gcc / g ++。
这是主要问题。在我这样做之后,事情就出现在监视器中了。
我的机器上安装了两个版本的gcc / g ++,/usr/bin/
下的旧版本不支持C ++ 11,还有一个较新的版本。
虽然我的LD_LIBRARY_PATH在前面有新的路径,但不知何故distcc并没有先找到旧的路径。因此我遇到了一些编译错误,说-std = c ++ 11没有被识别。
## The following solved this issue:
sudo yum remove /usr/bin/g++
sudo yum remove /usr/bin/gcc
使用distcc时出现链接错误,但直接使用g ++时却没有:
# Add a simple one-line script (mine was called /usr/bin/distg++)
distcc g++ "$@"
然后添加" -DCMAKE_CXX_COMPILER = distg ++"你的CMake命令:
cmake ... -DCMAKE_CXX_COMPILER=distg++