使用 Makefile 创建中间目标文件到另一个目录

使用 Makefile 创建中间目标文件到另一个目录

由于对我的 OpenBSD 机器的系统磁盘进行分区时发生错误,我现在空间不足/usr

openbsd$ df
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/sd0a      2057756    141352   1813520     7%    /
/dev/sd0k     30699004     66384  29097672     0%    /home
/dev/sd0d      5202236    746020   4196108    15%    /tmp
/dev/sd0f      4122108   3002484    913520    77%    /usr
/dev/sd0g      2057756    387016   1567856    20%    /usr/X11R6
/dev/sd0h     11366780    552236  10246208     5%    /usr/local
/dev/sd0j     12379516         4  11760540     0%    /usr/obj
/dev/sd0i      3857212   2060552   1603800    56%    /usr/src
/dev/sd0e      8218940     67776   7740220     1%    /var

我试图安装更高版本的 GCC,结果出现错误No space left on device

openbsd$ cd /usr/ports/lang/gcc/6
openbsd$ doas make install
{{ ... thouands of lines omitted for brevity ... }}
tar: Unable to create gcc-6.4.0/install-sh: No space left on device
tar: Unable to create gcc-6.4.0/ylwrap: No space left on device
tar: Unable to create gcc-6.4.0/LAST_UPDATED: No space left on device
tar: Unable to create gcc-6.4.0/NEWS: No space left on device
tar: Unable to create gcc-6.4.0/MD5SUMS: No space left on device
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2555 'do-extract': @PATH=/usr/ports/pobj/gcc-6.4.0/bin:/usr/bin:/bin:/usr/sbin:/s...)
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2528 '/usr/ports/pobj/gcc-6.4.0/.extract_done')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2003 '/usr/ports/packages/amd64/all/gcc-6.4.0p0.tgz')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2465 '_internal-package')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2444 'package')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2021 '/var/db/pkg/gcc-6.4.0p0/+CONTENTS')
*** Error 1 in /usr/ports/lang/gcc/6 (/usr/ports/infrastructure/mk/bsd.port.mk:2444 'install')

是否可以将目标文件构建到另一个目录,这样就不会占用大量空间/usr/ports?我尝试过类似的方法cd /tmp/build && make -C /usr/ports/lang/gcc/6 install,但中间文件仍然在所在目录中生成Makefile

答案1

您可以将该变量设置WRKOBJDIR为应进行构建的目录。该变量的描述见bsd.port.mk(5)

例如,您可以使用

cd /usr/ports/lang/gcc/6
doas env WKOBJDIR=/tmp/build make install

/etc/mk.conf或者如果您总是想在与 不同的位置编译端口,则设置变量 in /usr/ports/pobj

另请注意,lang/gcc/6端口去掉了今天(2019-04-25)从 ports 树中删除,因为它已被 GCC 8 废弃。

相关内容