gcc distcc LTO cc调用不值得分发

nbnkbykc  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(135)

env描述

操作系统:Ubuntu 20.04 distcc:3.4(从源代码编译)与下面的方法共同:

sudo apt-get install gcc make python3 python3-dev libiberty-dev autoconf -y
wget https://github.com/distcc/distcc/releases/download/v3.4/distcc-3.4.tar.gz -O /tmp/distcc.tar.gz
tar xvf /tmp/distcc.tar.gz -C /tmp/
cd /tmp/distcc-*; ./configure && make && sudo make install; sudo update-distcc-symlinks

构建项目:

sudo apt-get build-dep python3 -y
sudo apt-get install pkg-config -y
# for building all modules
sudo apt-get install build-essential gdb lcov pkg-config \
      libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev \
      libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \
      lzma lzma-dev tk-dev uuid-dev zlib1g-dev -y
cd /tmp/
wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz
tar xzf Python-3.11.2.tgz
cd Python-3.11.2

问题描述

我试图在以下环境中构建项目

export DISTCC_VERBOSE=1
export PATH=/usr/lib/distcc/:$PATH
export DISTCC_HOSTS="Test-7F-BR10-1-f1-1 Test-7F-SR4-11-14"
export DISTCC_POTENTIAL_HOSTS="Test-7F-BR10-1-f1-1 Test-7F-SR4-11-14"

我期待distcc将使用远程服务器来构建,但它未能使用localhost来构建以下内容的代码。我google了很多,但没有找到有用的信息。

distcc[13888] (dcc_trace_version) distcc 3.4 aarch64-unknown-linux-gnu; built Mar 22 2023 13:43:26
distcc[13888] (dcc_recursion_safeguard) safeguard level=0
distcc[13888] (main) compiler name is "gcc"
distcc[13888] (dcc_set_path) setting PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
distcc[13888] (dcc_scan_args) scanning arguments: gcc
distcc[13888] (dcc_scan_args) LTO cc invocations are not worth distributing
distcc[13888] (dcc_get_hostlist) read hosts from environment
distcc[13888] (dcc_parse_hosts) found tcp token "Test-7F-BR10-1-f1-1"
distcc[13888] (dcc_parse_hosts) found tcp token "Test-7F-SR4-11-14"
distcc[13888] (dcc_lock_host) got cpu lock on localhost slot 0 as fd3
distcc[13888] exec on localhost: gcc -pthread -fno-semantic-interposition

更重要的是,服务器端是OK的。我运行下面的代码来启动服务器,我发现线程与命令ps -ef --forest

DISTCC_VERBOSE=1 distccd --jobs $(nproc) --log-stderr --no-detach --daemon --allow 0.0.0.0/0
1cklez4t

1cklez4t1#

distcc[13888] (dcc_scan_args) LTO cc invocations are not worth distributing

被调用的命令包含-flto,它告诉gcc启用link-time optimization,但在2021年2月,distcc的开发人员决定在启用这种优化时不分发编译(参见commit)。
很可能您正在尝试使用相同的选项(包括-flto)编译所有源文件,因此没有任何编译是分布式的,所有操作都在本地机器上完成。
请注意,这似乎已在2021年7月在this commit中恢复,但最新版本是cut in May 2021
简而言之,要么:

  • 禁用链接时优化
  • 从master的最后一次提交构建distcc

相关问题