首页 » 网站推广 » phpbuildtrees技巧_26并行编译树又称 VPATH 编译Parallel Build Trees

phpbuildtrees技巧_26并行编译树又称 VPATH 编译Parallel Build Trees

访客 2024-11-18 0

扫一扫用手机浏览

文章目录 [+]

源代码树根植于包含 configure 脚本的目录。
它包含所有源文件(已分发的文件),并可利用多个子目录进行排列。

编译树根植于运行 configure 时确当前目录,个中包含所有工具文件、程序、库和其他从源代码联编的派生文件(因此不会被分发)。
编译树的子目录布局常日与源代码树相同;其子目录由编译系统自动创建。

phpbuildtrees技巧_26并行编译树又称 VPATH 编译Parallel Build Trees

如果 configure 在自己的目录中实行,源代码树和编译树就会合并:派生文件会在与其源代码相同的目录中编译。
我们的第一个安装示例便是这种情形(拜会基本安装)。

phpbuildtrees技巧_26并行编译树又称 VPATH 编译Parallel Build Trees
(图片来自网络侵删)

用户的一个常见哀求是希望将所有派生文件限定在一个目录中,以保持源代码目录的整洁。
下面是我们如何运行 configure,在名为 build/ 的构建树(即子目录)中创建所有文件。

~ % tar zxf ~/amhello-1.0.tar.gz~ % cd amhello-1.0~/amhello-1.0 % mkdir build && cd build~/amhello-1.0/build % ../configure…~/amhello-1.0/build % make…

这些源代码树和编译树不同的设置常日被称为并行编译或 VPATH 编译
并行编译这一说法随意马虎让人产生误解:并行一词指的是编译树与源代码树之间的阴影,而不是编译命令运行办法的并发性。
因此,我们不才文中利用 VPATH 构建来指代此类设置。
VPATH 是 Makefile 为许可这些联编而利用的 make 功能的名称(拜会《GNU Make 手册》中的 VPATH 搜索所有先决条件的路径)。

VPATH 构建还有其他有趣的用场。
其一因此多种配置构建相同的源代码。
例如

~ % tar zxf ~/amhello-1.0.tar.gz~ % cd amhello-1.0~/amhello-1.0 % mkdir debug optim && cd debug~/amhello-1.0/debug % ../configure CFLAGS='-g -O0'…~/amhello-1.0/debug % make…~/amhello-1.0/debug % cd ../optim~/amhello-1.0/optim % ../configure CFLAGS='-O3 -fomit-frame-pointer'…~/amhello-1.0/optim % make…

对付网络文件系统,也可以利用类似的方法在不同的机器上构建相同的源代码。
例如,假设源代码安装在两个主机共享的目录中:HOST1 和 HOST2,它们可能是不同的平台。

~ % cd /nfs/src/nfs/src % tar zxf ~/amhello-1.0.tar.gz

在第一台主机上,你可以创建一个本地构建目录:

[HOST1] ~ % mkdir /tmp/amh && cd /tmp/amh[HOST1] /tmp/amh % /nfs/src/amhello-1.0/configure...[HOST1] /tmp/amh % make && sudo make install...

(这里我们假设安装程序已经配置了 sudo,因此可以利用 root 权限实行 make install;这比在基本安装中利用 su 更方便)。
在第二台主机上,你可能会在同一韶光做完备相同的操作:

[HOST2] ~ % mkdir /tmp/amh && cd /tmp/amh[HOST2] /tmp/amh % /nfs/src/amhello-1.0/configure...[HOST2] /tmp/amh % make && sudo make install...

在这种情形下,没有任何东西禁止 /nfs/src/amhello-1.0 目录只读。
事实上,VPATH 构建也是一种从只读介质(如 CD-ROM)构建软件包的方法。
(在 GNU 项目发展壮大之前,FSF 曾经出售过带有未打包源代码的光盘)。

相关文章