0

我在两台服务器上运行了一个 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',但结果仍然相同。

4

1 回答 1

1

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

  1. 首先,我做到了

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

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

    这是主要问题。在我这样做之后,监视器中出现了一些东西。

  2. 我的机器上安装了两个版本的 gcc/g++,一个/usr/bin/不支持 C++11 的旧版本,一个支持 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
    
  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++
    
于 2017-01-19T10:24:45.050 回答