首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >distcc是否存在需要同步网络文件系统的情况?

distcc是否存在需要同步网络文件系统的情况?
EN

Stack Overflow用户
提问于 2020-02-11 23:26:30
回答 1查看 112关注 0票数 4

两个简化的makefile

makefile1

代码语言:javascript
复制
a.txt:
    echo “123144234” > a.txt

t2: a.txt
    cat a.txt > b.txt

makefile2

代码语言:javascript
复制
t1:
    echo “123144234” > a.txt

t2: t1
    cat a.txt > b.txt

两个makefile具有相同的功能。

两个makefile都可以并行运行,因为t2依赖于t1

然而,有一个关键的区别可能?/做?当涉及到分布式构建时,要有所作为。

makefile1中,t2直接依赖于工件a.txt,它也与目标本身的名称( a.txt )相同。但是,在makefile2中,虽然t1的配方和工件与a.txt相同,但目标的名称不是a.txt

这种差异之所以关键,是因为gnu make (我假设是distcc)没有解析食谱--也没有在运行时分析文件系统--来确定给定目标的所有工件。在makefile2中,gnu make不创建a.txtt1之间的任何关系。

当构建是以make -j (即并行但非分布式)的方式完成时,这种差异是无关紧要的,因为所有make目标都运行在同一台机器上,即所有make实例都访问同一个文件系统。

但让我们考虑一下什么可以?/做什么?如果两个目标构建在两个独立的机器上,则在分布式构建过程中发生。

在这两个makefile中,t2的配方将在a.txt/t1的配方之后运行。

但是,在makefile1中,t2a.txt的依赖是显式的,即distcc 知道对于单独的机器上的make t2,它必须将文件a.txt发送到该单独的机器。

问题

如果在没有同步分布式文件系统的情况下,使用machine?

  • What运行makefile2,并且在另一台计算机上t2maked,则会不会出现构建错误,因为其他

  • 上没有a.txt是分布式Linux文件系统的选项?

G 255

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-18 17:59:46

distcc仅仅是gcc的替代品。它使用本地gcc对源文件进行预处理,然后将其发送到另一台计算机进行编译,接收回对象文件并将其保存到本地文件系统中。distcc不需要参与主机之间的共享网络文件系统或时钟同步。

有一个新的“泵”功能,可以在远程服务器上进行预处理,但它也不需要共享网络文件系统或时钟同步。

您的make总是在本地运行。

回答你的问题:

  1. distcc不运行makemake运行distc而不是gcc。locally.
  2. make检查依赖项及其时间戳,make在本地运行,不关心它使用的文件系统是本地的还是网络的。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60178859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档