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또는 항상 .NET에서 변수를 설정하는 것과 다른 위치에서 포트를 컴파일하려는 경우 /usr/ports/pobj.

lang/gcc/6포트 도 참고하세요제거하다GCC 8에서 더 이상 사용되지 않으므로 오늘(2019-04-25) 포트 트리에서 제거되었습니다.

관련 정보