使用 distcc 时如何检查哪些组件是由哪个服务器编译的



我有一个在两台服务器上运行的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",但结果仍然是一样的。

好的,所以我尝试了一些事情并解决了问题。我也遇到了一些我想分享的新问题。

  1. 首先,我做到了

    export CC=/usr/bin/distcc
    export CXX=/usr/bin/distcc
    

    让CMake知道我想使用distcc而不是gcc/g ++。

    这是主要问题。在我这样做之后,事情出现在显示器中。

  2. 我的机器上安装了两个版本的 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
    
  3. 当我使用 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++
    

最新更新