我有一个在两台服务器上运行的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检查了一下,结果发现所有文件都是在主站的本地(A)上编译的。不过,我不确定为什么没有任何错误。
我也尝试从~/.distcc/hosts中删除"localhost",但结果仍然是一样的。
好的,所以我尝试了一些事情并解决了问题。我也遇到了一些我想分享的新问题。
-
首先,我做到了
export CC=/usr/bin/distcc export CXX=/usr/bin/distcc
让CMake知道我想使用distcc而不是gcc/g ++。
这是主要问题。在我这样做之后,事情出现在显示器中。
-
我的机器上安装了两个版本的 gcc/g++,一个是不支持 C++11 的
/usr/bin/
下的旧版本,另一个是支持 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++