저는 FreeBSD(9.1)를 처음 사용하고 있으며 시스템을 설정하는 중입니다. 아직 파악하지 못한 한 가지 문제는 ccache
일을 시작하는 것입니다. 포트에서 설치하고 설명서(수정됨 /etc/make.conf
)의 지침을 따랐습니다. 포트에서 새 패키지를 컴파일하면 제대로 작동하지만 캐시가 채워지지 않아 ccache
전혀 사용되지 않는 것처럼 보입니다.
/etc/make.conf
내 파일의 내용은 다음과 같습니다.
WITH_PKGNG= yes
# added by use.perl 2013-01-20 01:08:34
PERL_VERSION=5.14.2
# the rest here is copied from /usr/local/share/doc/ccache/ccache-howto-freebsd.txt
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
.if !defined(NOCCACHE)
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
.endif
.endif
또한 의 다른 지침을 따르고 루트에서 사용하는 기본 셸인 ccache-howto-freebsd.txt
에 다음 줄을 추가해 보았습니다 ./etc/csh.cshrc
setenv PATH /usr/local/libexec/ccache:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin
여전히 차이가 없습니다. ccache -s
컴파일 타임에 캐시가 아직 가득 차지 않았음을 나타냅니다. 어떤 생각이 있나요?
답변1
이 질문은 2013년 초에 제기되었습니다. 그해 10월에는 ccache와 포트를 올바르게 사용하는 방법에 대한 지침이 나왔습니다.다음에 추가도착하다 ccache-howto-freebsd.txt
. 그 이후로 ccache와 포트 인프라가 모두 개선되어 이제 더 잘 통합되었습니다.
현재 FreeBSD 11 이상에서는 devel/ccache 포트를 설치하고 포트를 추가하기만 하면 WITH_CCACHE_BUILD=yes
기본 /etc/make.conf
및 포트와 "작동"합니다.
이전 FreeBSD 버전에서는 WITH_CCACHE_BUILD=yes
포트만 영향을 받습니다. 기본에는 여전히 .if
... .endif
절과 경로 조정이 필요합니다. 정확한 지침이 제공되며 ccache-howto-freebsd.txt
따라하기 쉬워야 합니다.
답변2
(arved 님의 의견이 맞습니다. 문제는 해결되었지만 어쨌든 if 문이 권장되는 이유를 여전히 이해하지 못합니다. 그래서 답변을 커뮤니티 위키에 게시합니다. 이유를 알고 계시다면 자유롭게 개선하십시오. )
먼저 어떤 컴파일러가 사용되는지 알아보세요.
$ cd /usr/ports/devel/gdb && make -V CC
cc
cc
은 기본 C 컴파일러이지만 이어야 합니다 ccache
.
문제를 해결하려면 /etc/make.conf
if 문을 편집하고 제거하세요...
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))`
...그리고 물론 에필로그도요 .endif
. 그러면 문제가 해결됩니다.
$ cd /usr/ports/devel/gdb && make -V CC
/usr/local/libexec/ccache/world/cc
답변3
나는 같은 문제에 직면했다. 나를 위해 일한 솔루션은 다음과 같습니다/etc/make.conf
# added by use.perl 2013-09-06 18:26:40
PERL_VERSION=5.14.4
.if !defined(NO_CCACHE)
CC= /usr/local/libexec/ccache/world/cc
CXX= /usr/local/libexec/ccache/world/c++
.endif
.if ${.CURDIR:M*/ports/devel/ccache}
NO_CCACHE= yes
.endif