영어프랑스어스페인어

Ad


온웍스 파비콘

ccache - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 ccache 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 ccache입니다.

프로그램:

이름


ccache - 빠른 C/C++ 컴파일러 캐시

개요


캐시 [옵션]
캐시 컴파일러 [컴파일러 옵션]
컴파일러 [컴파일러 옵션] (심볼릭 링크를 통해)

기술


ccache는 컴파일러 캐시입니다. 이전 결과를 캐싱하여 재컴파일 속도를 높입니다.
컴파일 및 동일한 컴파일이 다시 수행될 때 감지합니다. 지원
언어는 C, C++, Objective-C 및 Objective-C++입니다.

ccache는 항상 정확히 동일한 컴파일러 출력을 생성하도록 주의 깊게 작성되었습니다.
캐시 없이 얻을 수 있습니다. 당신이 당신이라고 말할 수 있는 유일한 방법은
ccache를 사용하는 것이 속도입니다. 이 목표에 대해 현재 알려진 예외는 BUGS에 나열되어 있습니다.
ccache가 결과를 변경하는 문서화되지 않은 경우를 발견했다면
컴파일러, 알려주십시오.

특징
· 히트/미스에 대한 통계를 유지합니다.

· 자동 캐시 크기 관리.

· 경고를 생성하는 컴파일을 캐시할 수 있습니다.

· 쉬운 설치.

· 낮은 오버헤드.

· 복사를 피하기 위해 선택적으로 하드 링크를 사용합니다.

· 디스크 공간을 줄이기 위해 선택적으로 캐시의 파일을 압축합니다.

제한 사항
· 단일 C/C++/Objective-C/Objective-C++의 컴파일을 캐시하는 방법만 알고 있습니다.
파일. 다른 유형의 컴파일(다중 파일 컴파일, 링크 등)은 자동으로
실제 컴파일러를 실행하는 것으로 돌아갑니다.

· 충분히 유사하게 동작하는 GCC 및 컴파일러에서만 작동합니다.

· 일부 컴파일러 플래그는 지원되지 않습니다. 이러한 플래그가 감지되면 ccache는
자동으로 실제 컴파일러를 실행하는 것으로 돌아갑니다.

운영 모드


ccache를 사용하는 방법은 XNUMX가지가 있습니다. 컴파일 명령에 접두사를 붙일 수 있습니다.
캐시 또는 심볼릭 링크를 생성하여 ccache가 컴파일러로 가장하도록 할 수 있습니다.
컴파일러로) ccache. 첫 번째 방법은 시도하려는 경우 가장 편리합니다.
ccache를 꺼내거나 일부 특정 프로젝트에 사용하고 싶습니다. 두 번째 방법이 가장 유용합니다.
모든 컴파일에 ccache를 사용하려는 경우.

데비안 시스템에서 두 번째 방법을 사용하려면 /usr/lib/ccache
너의 ~에게 PATH. /usr/lib/ccache 현재 설치된 모든 컴파일러에 대한 심볼릭 링크를 포함합니다.
데비안 패키지.

또는 다음과 같이 원하는 심볼릭 링크를 만들 수 있습니다.

ln -s /usr/bin/ccache /usr/local/bin/gcc
ln -s /usr/bin/ccache /usr/local/bin/g++
ln -s /usr/bin/ccache /usr/local/bin/cc
ln -s /usr/bin/ccache /usr/local/bin/c++

기타 등등. 이것은 심볼릭 링크가 있는 디렉토리가 경로 앞에 오는 한 작동합니다.
컴파일러(일반적으로 / usr / bin). 설치 후 실행하고 싶을 수도 있습니다.
올바른 링크가 사용 중인지 확인하려면 "어떤 gcc"를 입력해야 합니다.

경고
ccache가 컴파일러로 가장하도록 하는 기술은 잘 작동하지만 현재
동일한 작업을 수행하는 다른 도구와 잘 상호 작용하지 않습니다. CCACHE 사용을 참조하십시오.
기타 컴파일러 래퍼.

경고
하드 링크를 사용하지 말고 심볼릭 링크를 사용하십시오. 하드 링크는 "흥미로운"
문제.

옵션


이 옵션은 ccache를 "ccache"로 호출할 때만 적용됩니다. 컴파일러로 호출될 때
(이전 섹션에서 설명한 대로 심볼릭 링크를 통해) 일반 컴파일러 옵션이 적용됩니다.
컴파일러의 설명서를 참조해야 합니다.

-씨, --대청소
지정된 파일 번호가 될 때까지 오래된 캐시 파일을 제거하여 캐시를 정리하고
캐시 크기 제한을 초과하지 않습니다. 이것은 또한 캐시 파일 수를 다시 계산하고
크기 합계. 일반적으로 ccache가 유지하므로 수동으로 정리를 시작할 필요가 없습니다.
런타임 시 지정된 제한 아래로 캐시하고 통계를 최신 상태로 유지
각 편집. 강제 정리는 캐시를 수동으로 수정하는 경우에 대부분 유용합니다.
캐시 크기 통계가 정확하지 않을 수 있습니다.

-씨, --분명한
전체 캐시를 지우고 캐시된 모든 파일을 제거하지만 구성 파일은 유지합니다.

-NS, --최대 파일=N
캐시에 허용되는 최대 파일 수를 설정합니다. 제한이 없는 경우 0을 사용합니다. 값은
캐시 디렉토리의 구성 파일에 저장되며 모든 향후에 적용됩니다.
편집.

-시간, --도움
옵션 요약 페이지를 인쇄합니다.

-미디엄, --최대 크기=SIZE
캐시에 저장되는 파일의 최대 크기를 설정합니다. SIZE 숫자여야 합니다
뒤에 선택적 접미사: k, M, G, T(십진법), Ki, Mi, Gi 또는 Ti(XNUMX진법). NS
기본 접미사는 G입니다. 제한이 없는 경우 0을 사용합니다. 값은 구성 파일에 저장됩니다.
캐시 디렉토리에 있으며 이후의 모든 컴파일에 적용됩니다.

-영형, --세트 구성=키 = 값
구성 설정 KEYVALUE. 자세한 내용은 구성을 참조하십시오.

-NS, --인쇄 구성
현재 구성 옵션과 해당 옵션이 시작된 위치(환경
변수, 구성 파일 또는 컴파일 시 기본값).

-에스, --쇼-통계
캐시에 대한 현재 통계 요약을 인쇄합니다.

-V, --번역
버전 및 저작권 정보를 인쇄합니다.

-지, --제로 통계
캐시 통계를 XNUMX으로 만듭니다(구성 옵션은 아님).

EXTRA 옵션


컴파일러로 실행할 때 ccache는 일반적으로 동일한 명령줄 옵션을 사용합니다.
사용중인 컴파일러. 이것에 대한 유일한 예외는 옵션입니다 --ccache-건너뛰기. 그
옵션은 어떤 식으로든 다음 옵션을 해석하지 않도록 ccache에 지시하는 데 사용할 수 있습니다.
있는 그대로 컴파일러에 전달합니다. 주의 사항: --ccache-건너뛰기 현재는 ccache에만 알려주지 않습니다.
다음 옵션을 특별한 컴파일러 옵션으로 해석하기 위해 — 옵션은 여전히
직접 모드 해시에 포함됩니다.

이것이 중요할 수 있는 이유는 ccache가 명령줄을 구문 분석하고
입력이 필요하므로 입력 파일 이름과 컴파일러 옵션이 무엇인지 확인
파일 이름을 사용하여 결과 개체 파일의 이름을 결정합니다(무엇보다도). NS
명령줄을 구문 분석할 때 휴리스틱 ccache가 사용하는 모든 인수는
file은 입력 파일 이름으로 처리됩니다. 사용하여 --ccache-건너뛰기 당신은 옵션을 강제할 수 있습니다
입력 파일 이름으로 처리되지 않고 대신 컴파일러에 다음과 같이 전달됩니다.
명령 행 옵션.

또 다른 경우 --ccache-건너뛰기 ccache가 옵션을 특별히 해석하는 경우 유용할 수 있습니다.
옵션이 컴파일러에 대해 ccache가 아닌 다른 의미를 갖기 때문에 그렇게 해서는 안 됩니다.
생각합니다.

구성


ccache의 기본 동작은 구성 파일 설정에 의해 재정의될 수 있습니다.
로 시작하는 이름을 가진 환경 변수로 재정의할 수 있습니다. CCACHE_. 캐시
일반적으로 두 개의 파일에서 구성을 읽습니다. 첫 번째는 시스템 수준 구성 파일이고 다른 하나는
두 번째로 캐시별 구성 파일입니다. 구성 설정의 우선 순위는 다음과 같습니다.
다음(여기서 1이 가장 높음):

1. 환경 변수.

2. 캐시별 구성 파일 /ccache.conf (일반적으로
$HOME/.ccache/ccache.conf).

3. 시스템 전체 구성 파일 /ccache.conf (일반적으로
/etc/ccache.conf or /usr/local/etc/ccache.conf).

4. 컴파일 타임 기본값.

특별한 경우로 환경 변수가 CCACHE_CONFIGPATH 설정되면 ccache가 읽습니다.
기본 경로 대신 지정된 경로에서 구성합니다.

구성 파일 구문
구성 파일은 한 줄에 하나씩 설정되는 단순한 "키 = 값" 형식입니다. 윤곽
해시 기호로 시작하는 것은 주석입니다. 공백과 마찬가지로 빈 줄은 무시됩니다.
주변 키와 값. 예시:

# 최대 캐시 크기를 10GB로 설정:
최대 크기 = 10G

부울
일부 설정은 부울 값(즉, 진리값)입니다. 구성 파일에서 이러한 값은
문자열로 설정해야 합니다 참된 or 그릇된. 해당 환경 변수의 경우
의미론은 약간 다릅니다: 설정된 환경 변수는
값(빈 문자열로 설정되어 있어도)이고 설정되지 않은 환경 변수는 "거짓"을 의미합니다.
각 부울 환경 변수에는 다음으로 시작하는 부정 형식도 있습니다. CCACHE_NO. 용
예, CCACHE_COMPRESS 압축을 강제로 설정하고 CCACHE_NOCOMPRESS 설정할 수 있습니다
압축을 하지 않도록 합니다.

구성 설정
다음은 사용 가능한 구성 설정 목록입니다. 해당 환경
변수 이름은 각 구성 설정 키 뒤에 괄호로 표시됩니다. 부울
옵션은 "[boolean]"으로 표시됩니다.

베이스_디렉터리 (CCACHE_BASEDIR)
이 설정은 디렉토리의 절대 경로여야 합니다. 그런 다음 ccache는 절대값을 다시 씁니다.
컴파일을 식별하는 해시를 계산하기 전에 상대 경로로의 경로,
그러나 지정된 디렉토리 아래의 경로에 대해서만. 빈 문자열(즉,
기본값), 다시 쓰기가 수행되지 않습니다. COMPILING IN 아래의 토론도 참조하십시오.
다른 디렉토리.

캐시 디렉토리 (CCACHE_DIR)
이 설정은 ccache가 캐시된 컴파일러 출력을 보관할 위치를 지정합니다. 그것은 것이다
시스템 전체 구성 파일 또는 환경으로 설정된 경우에만 적용됩니다.
변하기 쉬운. 기본값은 $HOME/.ccache.

캐시_디렉터리_레벨 (CCACHE_NLEVELS)
이 설정을 사용하면 캐시의 디렉터리 수준 수를 선택할 수 있습니다.
예배 규칙서. 기본값은 2입니다. 최소값은 1이고 최대값은 8입니다.

컴파일러 (CCACHE_CC)
이 설정을 사용하여 컴파일러 이름을 강제로 사용할 수 있습니다. 공백으로 설정하면
string(기본값), ccache는 명령줄에서 이를 처리합니다.

컴파일러_체크 (CCACHE_COMPILERCHECK)
기본적으로 ccache에는 수정 시간("mtime")과 컴파일러 크기가 포함됩니다.
캐시에서 검색된 결과가 정확한지 확인하기 위해 해시에 포함됩니다. 이 설정
다른 전략을 선택하는 데 사용할 수 있습니다. 가능한 값은 다음과 같습니다.

함유량
컴파일러 바이너리의 내용을 해시합니다. 이것은 ccache를 매우 약간 느리게 만듭니다.
에 비해 엠타임 설정하지만 컴파일러 업그레이드에 더 잘 대처합니다.
빌드 부트스트랩 프로세스 중에.

엠타임
빠른 컴파일러의 mtime과 크기를 해시합니다. 이것이 기본값입니다.

없음
아무 것도 해시하지 마십시오. 안전하게 사용할 수 있는 상황에 유용할 수 있습니다.
컴파일러의 mtime 또는 크기가 변경된 경우에도 캐시된 결과(예:
컴파일러는 빌드 시스템의 일부로 빌드되고 컴파일러의 소스는
변경되었거나 컴파일러에 코드 생성에 영향을 주지 않는 변경 사항만 있는 경우).
만 사용해야 합니다. 없음 당신이 무엇을하고 있는지 알고있는 경우 설정.

문자열:값
가치 해시를 계산할 문자열로. 이것은 컴파일러 개정일 수 있습니다.
이전에 검색하고 여기에서 환경 변수를 통해 설정한 번호입니다.

a 명령
지정된 명령의 표준 출력 및 표준 오류 출력을 해시합니다. NS
문자열은 실행할 명령과 인수를 찾기 위해 공백으로 분할됩니다.
명령 문자열에 대한 다른 해석은 수행되지 않습니다.
특별한 단어 %컴파일러% 컴파일러에 대한 경로로 대체됩니다. 여러 개의
명령은 구분 기호로 세미콜론을 사용하여 지정할 수 있습니다. 예:

· %컴파일러% -v

· %compiler% -덤프 머신; %컴파일러% -덤프 버전

지정된 명령이 가능한 한 빠른지 확인해야 합니다.
각 ccache 호출에 대해 한 번 실행됩니다.

캐시를 피하려는 경우 명령을 사용하여 컴파일러를 식별하는 것이 유용합니다.
컴파일러가 다시 빌드되었지만 변경되지 않은 경우 누락됩니다.

또 다른 경우는 컴파일러(ccache에서 볼 수 있는 것처럼)가 실제로 실제가 아닌 경우입니다.
컴파일러이지만 다른 컴파일러 래퍼 — 이 경우 기본값은 엠타임 방법
다른 컴파일러 래퍼의 mtime과 크기를 해시합니다.
ccache는 컴파일러 업그레이드를 감지할 수 없습니다. 적절한 명령을 사용하여
따라서 컴파일러를 식별하는 것이 더 안전하지만 느리므로 다음을 고려해야 합니다.
계속 사용 엠타임 방법을 조합하여 접두사_명령 설정
가능한. 다른 컴파일러 래퍼와 함께 CCACHE 사용을 참조하세요.

압축 (CCACHE_COMPRESS) [부울]
참이면 ccache는 개체 파일과 다른 컴파일러 출력을 압축합니다.
은닉처. 그러나 이 설정은 캐시에서 파일을 검색하는 방법에 영향을 주지 않습니다.
압축 및 비압축 결과는 이 설정에 관계없이 계속 사용할 수 있습니다.
기본값은 false입니다.

압축 수준 (CCACHE_COMPRESSLEVEL)
이 설정은 ccache가 개체 파일을 압축할 수준을 결정합니다. 그것만
경우에 효과가 있습니다 압축 사용 가능. 값의 기본값은 6이며 이보다 낮아서는 안 됩니다.
1(가장 빠르고 가장 나쁜 압축)보다 크지 않고 9(가장 느리고 가장 좋은 압축).

cpp_extension (CCACHE_확장)
이 설정은 중간에 대한 특정 확장을 강제하는 데 사용할 수 있습니다.
전처리된 파일. 기본값은 사용할 확장자를 자동으로 결정하는 것입니다.
컴파일되는 파일 유형을 기반으로 하는 중간 전처리기 파일이지만
때때로 작동하지 않습니다. 예를 들어 HP-UX에서 "aCC" 컴파일러를 사용하는 경우
cpp 확장자 i.

직접 모드 (CCACHE_DIRECT) [부울]
true이면 직접 모드가 사용됩니다. 기본값은 true입니다. 다이렉트 모드를 참조하십시오.

비활성화 (CCACHE_DISABLE) [부울]
true이면 ccache는 캐시를 완전히 우회하여 실제 컴파일러를 호출합니다.
기본값은 false입니다.

extra_files_to_hash (CCACHE_EXTRAFILES)
이 설정은 ccache가 해시 합계에 포함할 파일의 경로 목록입니다.
빌드를 식별합니다. 목록 구분 기호는 Windows 시스템에서 세미콜론이고 콜론입니다.
다른 시스템에서.

하드링크 (CCACHE_HARDLINK) [부울]
true인 경우 ccache는 캐시 디렉토리를 생성할 때 하드 링크를 사용하려고 시도합니다.
파일 복사본을 사용하는 대신 컴파일러 출력. 하드 링크를 사용하면 약간
어떤 상황에서는 더 빠르지만 의존하는 "make"와 같은 프로그램을 혼동시킬 수 있습니다.
수정 시간. 명심해야 할 또 다른 사항은 결과 개체 파일이
어떤 식으로든 수정되면 캐시된 개체 파일도 손상됩니다. 하드 링크는
압축된 캐시 파일용으로 만들어지지 않았습니다. 이것은 당신이 활성화해서는 안된다는 것을 의미합니다
하드 링크를 사용하려는 경우 압축. 기본값은 false입니다.

해시_디렉토리 (CCACHE_HASHDIR) [부울]
true인 경우 ccache는 해시에 현재 작업 디렉토리를 포함합니다.
두 개의 컴파일을 구별하십시오. 이것은 현재의 저장 문제를 방지합니다.
개체 파일의 디버그 정보에 있는 작업 디렉터리는 ccache가
디버그 정보의 작업 디렉터리가 잘못 설정된 캐시된 개체 파일입니다.
이 디버그 정보의 잘못된 설정이 거의 없기 때문에 이 옵션은 기본적으로 꺼져 있습니다.
문제를 일으킵니다. 올바른 디렉토리를 사용하지 않는 GDB에 문제가 발생하면
이 옵션을 활성화하십시오.

로그 파일 (CCACHE_LOGFILE)
파일 경로로 설정하면 ccache는 수행 중인 작업에 대한 정보를
지정된 파일. 이것은 문제를 추적하는 데 유용합니다.

최대_파일 (CCACHE_MAXFILES개)
이 옵션은 캐시에 보관할 최대 파일 수를 지정합니다. 아니오에는 0을 사용
제한(기본값).

최대 크기 (CCACHE_MAXSIZE)
이 옵션은 캐시의 최대 크기를 지정합니다. 제한이 없는 경우 0을 사용합니다. 기본값
값은 5G입니다. 사용 가능한 접미사: k, M, G, T(십진법) 및 Ki, Mi, Gi, Ti(XNUMX진법). NS
기본 접미사는 "G"입니다.

통로 (CCACHE_PATH)
설정하면 ccache는 실제 디렉토리를 찾을 때 이 목록에서 디렉토리를 검색합니다.
컴파일러. 목록 구분 기호는 Windows 시스템에서는 세미콜론이고 기타 시스템에서는 콜론입니다.
시스템. 설정하지 않으면 ccache는 컴파일러와 일치하는 첫 번째 실행 파일을 찾습니다.
정상적인 이름 PATH 그것은 ccache 자체에 대한 심볼릭 링크가 아닙니다.

접두사_명령 (CCACHE_프리픽스)
이 옵션은 명령줄에 공백으로 구분된 접두사 목록을 추가합니다.
ccache는 컴파일러를 호출할 때 사용합니다. 다른 컴파일러와 함께 CCACHE 사용을 참조하십시오.
래퍼.

읽기 전용 (CCACHE_READONLY) [부울]
true이면 ccache는 기존의 캐시된 개체 파일을 사용하려고 시도하지만 사용하지 않습니다.
캐시에 새로운 것을 추가하십시오. ccache 때문에 이것을 사용하는 경우
디렉토리가 읽기 전용이면 다음을 설정해야 합니다. 임시_디렉토리 그렇지 않으면 ccache가
임시 파일을 만들지 못했습니다.

읽기 전용_다이렉트 (CCACHE_READONLY_DIRECT) [부울]
처럼 읽기 전용 단, ccache는
전처리기 모드가 아닌 직접 모드를 사용하여 캐시합니다. 에 대한 문서 참조
읽기 전용 읽기 전용 ccache 디렉토리 사용과 관련하여.

다시 캐치하다 (CCACHE_RECACHE) [부울]
true인 경우 ccache는 이전에 저장된 결과를 사용하지 않습니다. 새로운 결과는 여전히
캐시되어 기존 결과를 덮어쓸 수 있습니다.

run_second_cpp (CCACHE_CPP2) [부울]
true인 경우 ccache는 두 번째 호출을 피하는 최적화를 사용하지 않습니다.
해시를 찾는 데 사용된 전처리된 출력을 컴파일하여 전처리기
캐시 미스의 경우. 이것은 기본적으로 디버깅 옵션이지만
일부 특이한 컴파일러는 컴파일에 문제가 있을 수 있습니다.
사전 처리된 출력, 이 경우 이 옵션을 사용하면 ccache를 어쨌든 사용할 수 있습니다.

엉성함 (CCACHE_슬로피니스)
기본적으로 ccache는 가능한 한 적은 거짓 캐시 적중을 제공하려고 합니다. 그러나
특정 상황에서는 ccache가 처리할 수 없는 것을 알고 있을 수 있습니다.
부여 된. 이 설정을 사용하면 ccache가 일부 검사를 순서대로 완화하도록 지시할 수 있습니다.
적중률을 높이기 위해. 값은 옵션이 있는 쉼표로 구분된 문자열이어야 합니다.
사용 가능한 옵션은 다음과 같습니다.

파일 매크로
무시 __파일__ 소스에 존재합니다.

file_stat_matches
ccache는 일반적으로 파일의 내용을 검사하여 일치하는지 여부를 결정합니다.
캐시된 버전. 이 옵션을 설정하면 ccache는 파일을 해당 파일과 일치하는 것으로 간주합니다.
크기, mtimes 및 ctimes가 일치하는 경우 캐시된 버전입니다.

include_file_ctime
기본적으로 ccache는 ctime이 포함된 헤더를 포함하는 경우 파일을 캐시하지 않습니다.
너무 새롭다. 이 옵션은 해당 검사를 비활성화합니다.

include_file_m시간
기본적으로 ccache는 mtime이 다음과 같은 헤더를 포함하는 파일을 캐시하지 않습니다.
너무 새롭다. 이 옵션은 해당 검사를 비활성화합니다.

pch_define
헤더 파일을 미리 컴파일할 때 #defines에 대해 조잡하지 마십시오. 미리 컴파일된 헤더 보기


time_macro
무시 __데이트____시각__ 소스 코드에 존재합니다.

자세한 내용은 문제 해결 아래의 토론을 참조하십시오.

통계 (CCACHE_STATS) [부울]
true인 경우 ccache는 각 컴파일에서 통계 카운터를 업데이트합니다. 기본값
사실이다.

임시_디렉토리 (CCACHE_TEMPDIR)
이 설정은 ccache가 임시 파일을 저장할 위치를 지정합니다. 기본값은
/ TMP.

주의 사항
이전 버전의 ccache에서는 CCACHE_TEMPDIR 와 동일한 파일 시스템에 있어야 합니다.
전에, CCACHE_DIR 하지만 이 요구 사항은 완화되었습니다.)

마스크 (CCACHE_UMASK)
이 설정은 ccache 및 모든 하위 프로세스(예:
컴파일러). 이것은 다른 사용자와 캐시를 공유하려는 경우에 주로 유용합니다.
이것은 또한 에서 생성된 개체 파일에 설정된 파일 권한에도 영향을 미칩니다.
당신의 편집.

하나로 하다 (CCACHE_UNIFY) [부울]
true이면 ccache는 전처리기 출력을 해시할 때 C/C++ 통합자를 사용합니다.
-g 옵션이 사용되지 않습니다. unifier는 일반 해시보다 느리므로 다음과 같이 설정합니다.
환경 변수는 속도가 약간 떨어지지만 ccache가
소스 코드에 대한 변경 사항이 다음으로 구성될 때 재컴파일하지 않는 이점
재포맷만. 통합자를 활성화하면 해시가 변경되므로 캐시됩니다.
unifier가 활성화되었을 때 생성된 컴파일은 unifier가 활성화되었을 때 재사용할 수 없습니다.
비활성화되고 그 반대의 경우도 마찬가지입니다. 통합자를 활성화하면 행 번호가 올바르지 않을 수 있습니다.
컴파일러 경고 메시지의 정보 및 확장 __선__ 매크로. 또한
통합자를 활성화하는 것은 직접 모드를 끄는 것을 의미합니다.

은닉처 SIZE 조치


기본적으로 ccache에는 캐시에 있는 파일의 총 크기에 XNUMXGB 제한이 있으며
최대 파일 수 없음. 다음을 사용하여 다른 제한을 설정할 수 있습니다. -M/--최대 크기
-F/--최대 파일 옵션. 사용하다 캐시 -s/--쇼-통계 캐시 크기와 현재를 보려면
구성된 제한(기타 다양한 통계와 함께).

은닉처 압축


ccache는 압축을 사용하여 캐시에 넣는 모든 파일을 선택적으로 압축할 수 있습니다.
라이브러리 zlib. 여기에는 약간의 성능 저하가 포함될 수 있지만
캐시에 맞는 파일. 다음을 사용하여 압축을 켤 수 있습니다. 압축
구성 설정을 사용하여 압축 수준을 조정할 수도 있습니다. 압축 수준.

주문 제작 씨캐쉬 WORKS


기본 아이디어는 정확히 동일한 코드를 두 번째로 컴파일하고
이전에 생성된 출력을 재사용합니다. 탐지는 다양한 종류의 해시를 통해 수행됩니다.
컴파일을 위해 고유해야 하는 정보와 해시 합계를 사용하여
캐시된 출력을 식별합니다. ccache는 매우 빠른 암호화 해시 알고리즘인 MD4를 사용합니다.
해싱. (MD4는 오늘날 암호화 컨텍스트에서 유용하기에는 너무 약하지만,
재컴파일을 식별하는 데 사용하기에 충분히 안전해야 합니다.) 캐시 적중 시 ccache는
모든 올바른 컴파일러 출력(모든 경고, 종속성 포함)을 제공할 수 있습니다.
파일 등) 캐시에서.

ccache에는 감지를 수행하는 두 가지 방법이 있습니다.

· NS 곧장 모드, 여기서 ccache는 소스 코드를 해시하고 파일을 직접 포함합니다.

· NS 전 처리기 모드, 여기서 ccache는 소스 코드에서 전처리기를 실행하고
결과를 해시

직접 모드는 전처리기를 실행하는 데 약간의 오버헤드가 있기 때문에 일반적으로 더 빠릅니다.

공통의 해시 정보
두 모드 모두 해시에 다음 정보가 포함됩니다.

· 전처리기 출력이 있는 파일에 대해 컴파일러에서 사용하는 확장자(일반적으로 .i
C 코드 및 .ii C++ 코드용)

· 컴파일러의 크기 및 수정 시간(또는 기타 컴파일러 관련 정보
에 의해 지정된 컴파일러_체크 환경)

· 컴파일러의 이름

· 현재 디렉토리(만약 해시_디렉토리 설정이 활성화됨)

· 지정된 파일의 내용 extra_files_to_hash 설정(있는 경우)

XNUMXD덴탈의 곧장 모드
직접 모드에서 해시는 다음과 같은 공통 정보로 구성됩니다.

· 입력 소스 파일

· 명령줄 옵션

해시를 기반으로 "매니페스트"라는 데이터 구조가 캐시에서 조회됩니다. NS
매니페스트에는 다음이 포함됩니다.

· 캐시된 컴파일 결과(객체 파일, 종속성 파일 등)에 대한 참조
해시와 일치하는 이전 컴파일에 의해 생성됨

· 컴파일 결과를 읽을 때 읽은 포함 파일의 경로
캐시에 저장

· 컴파일 결과가 파일에 저장되었을 때의 인클루드 파일의 해시 합계
캐시

그런 다음 포함 파일의 현재 내용이 해시되어 정보와 비교됩니다.
매니페스트에서. 일치하는 항목이 있으면 ccache는 컴파일 결과를 알고 있습니다. 만약 거기에
일치하지 않는 경우 ccache는 전처리기 실행으로 대체됩니다. 의 출력
전처리기는 읽은 포함 파일을 찾기 위해 구문 분석됩니다. 경로 및 해시 합계
이러한 포함 파일 중 다음 정보와 함께 매니페스트에 저장됩니다.
컴파일 결과를 생성했습니다.

직접 모드에는 캐치가 있습니다. 컴파일러에서 사용한 헤더 파일은 다음과 같습니다.
기록되었지만 헤더 파일은 지원 사용되었지만 존재했다면 사용되었을 것입니다.
아니다. 따라서 ccache가 캐시에서 결과를 가져올 수 있는지 확인할 때 현재
새 헤더 파일의 존재가 결과를 무효화해야 하는지 확인할 수 없습니다. 에
실제로 직접 모드는 절대 다수의 경우에 사용하는 것이 안전합니다.

다음 중 하나라도 해당되면 직접 모드가 비활성화됩니다.

· 구성 설정 직접 모드 거짓이다

· 포함 파일 중 하나의 수정 시간이 너무 새롭습니다(경합을 피하기 위해 필요함
질환)

· 통합자가 활성화됨(구성 설정 하나로 하다 사실이다)

· 직접 모드에서 지원하지 않는 컴파일러 옵션이 사용됩니다.

· ㅏ -워,X 이외의 컴파일러 옵션 -Wp,-MD,통로-Wp,-MMD,통로

· -엑스프리프로세서

· 문자열 "__TIME__"이 소스 코드에 있습니다.

XNUMXD덴탈의 전 처리기 모드
전처리기 모드에서 해시는 공통 정보와 다음으로 구성됩니다.

· 컴파일러 실행의 전처리기 출력 -E

· 포함 파일에 영향을 미치는 옵션을 제외한 명령줄 옵션(-I, -포함, -D,
등; 이론은 이러한 옵션이 있는 경우 전처리기 출력을 변경한다는 것입니다.
효과가 전혀 없음)

· 전처리기에 의해 생성된 모든 표준 오류 출력

해시를 기반으로 캐시된 컴파일 결과를 캐시에서 직접 조회할 수 있습니다.

컴파일 IN 다른 디렉토리


고유한 컴파일을 식별하는 해시에 포함된 일부 정보에는 다음이 포함될 수 있습니다.
절대 경로:

· 전처리된 소스 코드는 다음과 같은 경우 파일을 포함하는 절대 경로를 포함할 수 있습니다.
컴파일러 옵션 -g 가 사용되거나 절대 경로가 지정된 경우 -I 및 유사한 컴파일러
옵션을 제공합니다.

· 컴파일러 옵션에 의해 지정된 경로(예: -I, -MF등)은 절대적일 수 있습니다.

· 소스 코드 파일 경로는 절대 경로일 수 있으며 해당 경로는 다음을 대체할 수 있습니다. __파일__
소스 코드의 매크로 또는
전처리기.

즉, 동일한 코드를 다른 위치에서 컴파일하면 공유할 수 없습니다.
캐시 미스가 발생했기 때문에 다른 빌드 디렉토리 간의 컴파일 결과
해시의 일부인 절대 빌드 디렉토리 경로 때문입니다. 이를 완화하기 위해
문제가 있는 경우 구성 설정에서 "기본 디렉토리"를 지정할 수 있습니다. 베이스_디렉터리
디렉토리의 절대 경로. 그런 다음 ccache는 아래에 있는 절대 경로를 다시 작성합니다.
기본 디렉토리(즉, 기본 디렉토리가 접두사로 있는 경로)에 대한 상대 경로
해시를 구성할 때. 기본 디렉토리로 사용하는 일반적인 경로는 홈입니다.
디렉토리 또는 빌드 디렉토리의 상위인 다른 디렉토리. (사용하지 마십시오 /
기본 디렉토리는 ccache가 시스템 헤더 파일에 대한 경로를 다시 작성하게 하므로,
아무 것도 얻지 못하는 것입니다.)

기본 디렉토리 사용의 단점은 다음과 같습니다.

· 소스코드 파일의 절대경로를 지정하면, __파일__ 매크로는
대신 상대 경로로 확장됩니다.

· 소스 코드 파일의 절대 경로를 지정하고 다음으로 컴파일하는 경우 -gWalk Through California 프로그램,
오브젝트 파일에 저장된 소스 코드 경로는 잘못된 디렉토리를 가리킬 수 있습니다.
GDB와 같은 디버거가 소스 코드를 찾지 못하도록 합니다. 때때로 해결 방법은
GDB에서 "cd" 명령으로 디렉토리를 명시적으로 변경하려면.

미리 컴파일됨 헤더


ccache는 GCC의 미리 컴파일된 헤더를 지원합니다. 그러나 다음을 수행하려면 몇 가지 작업을 수행해야 합니다.
제대로 작동하게 하십시오:

· 설정해야 합니다. 엉성함pch_defines,time_macros. 그 이유는 ccache가
여부를 말해 __시각__ or __데이트__ 미리 컴파일된 헤더를 사용할 때 사용됩니다. 나아가, 그것은
전처리가 작동하는 방식 때문에 소스 코드에서 #defines의 변경 사항을 감지할 수 없습니다.
미리 컴파일된 헤더와 함께 사용합니다.

· 다음 중 하나를 수행해야 합니다.

· 사용 -포함 미리 컴파일된 헤더를 포함하는 컴파일러 옵션(즉,
사용 #포함 헤더를 포함하도록 소스 코드에); 또는

· (Clang 컴파일러의 경우) 사용 -include-pch PCH를 포함하는 컴파일러 옵션
미리 컴파일된 헤더에서 생성된 파일; 또는

· 추가 -fpch-전처리 컴파일시 컴파일러 옵션.

이렇게 하지 않으면 헤더 파일의 미리 컴파일되지 않은 버전이
사용(사용 가능한 경우) 또는 ccache는 실제 컴파일러 실행으로 폴백하고
통계 카운터 "전처리기 오류"(미리 컴파일되지 않은 헤더 파일이
유효한).

나누는 A 은닉처


개발자 그룹은 캐시 디렉토리를 공유하여 캐시 적중률을 높일 수 있습니다. NS
불쾌한 부작용 없이 캐시를 공유하려면 다음 조건이 충족되어야 합니다.

· 동일한 캐시 디렉토리를 사용합니다.

· 구성 설정이 하드링크 false(기본값)입니다.

· 모든 사용자가 같은 그룹에 있는지 확인합니다.

· 구성 설정 지정 마스크 이렇게 하면 캐시된 파일이
그룹의 모든 사람이 액세스할 수 있습니다.

· 모든 사용자에게 전체 캐시 디렉토리에 대한 쓰기 권한이 있는지 확인합니다.
공유 캐시의 모든 사용자를 신뢰합니다).

· setgid 비트가 캐시의 모든 디렉터리에 설정되어 있는지 확인합니다. 이것은 말한다
새 디렉토리에 대한 그룹 소유권을 상속하는 파일 시스템. 명령 "찾기
$CCACHE_DIR 유형 d | xargs chmod g+s”가 유용할 수 있습니다.

하드링크 모드를 피하는 이유는 하드링크가 원치 않는 부작용을 일으키기 때문에,
캐시된 파일에 대한 모든 링크가 파일의 수정 타임스탬프를 공유하기 때문입니다. 그 결과
다른 사용자가 있을 때마다 타임스탬프 기반 빌드 시스템에 의해 트리거되는 잘못된 종속성
기존 파일에 대한 링크. 일반적으로 사용자는 라이브러리와 바이너리가
이유없이 다시 연결됩니다.

에서 논의한 바와 같이 기본 디렉토리가 적절하게 설정되었는지 확인할 수도 있습니다.
이전 섹션.

나누는 A 은닉처 ON NFS


캐시 디렉토리를 NFS 파일 시스템(또는 유사한 파일 시스템)에 두는 것이 가능합니다.
그러나 다음을 명심하십시오.

· NFS에 캐시가 있으면 컴파일 속도가 느려질 수 있습니다. 약간의 벤치마킹을 수행하십시오.
가치가 있는지 확인하기 위해.

· ccache는 NFS에서 철저하게 테스트되지 않았습니다.

팁은 설정하는 것입니다. 임시_디렉토리 NFS 트래픽을 피하기 위해 로컬 호스트의 디렉토리에
임시 파일.

사용 씨캐쉬 세이프가드가 기타 컴파일러 래퍼


ccache를 다른 컴파일러 래퍼(예: "distcc")와 결합하는 권장 방법
ccache가 컴파일러 래퍼를 실행하도록 하는 것입니다. 이것은 다음을 정의하여 수행됩니다.
구성 설정 접두사_명령, 예를 들어 환경 변수를 설정하여
CCACHE_프리픽스 래퍼의 이름(예: distcc). 그런 다음 ccache는 접두사를 붙입니다.
컴파일러를 실행할 때 지정된 명령으로 명령줄. 여러 개를 지정하려면
접두사 명령, 설정 접두사_명령 콜론으로 구분된 명령 목록으로 이동합니다.

설정하지 않는 한 컴파일러_체크 적절한 명령으로 (해당 설명 참조
구성 옵션) 형식을 사용하지 않는 것이 좋습니다. 캐시 다른 래퍼
컴파일러 인수 컴파일 명령으로. 또한 사용하지 않는 것이 좋습니다.
다른 컴파일러 래퍼에 대한 마스커레이딩 기술. 그 이유는 기본적으로
ccache는 두 경우 모두 실제 대신 다른 래퍼의 mtime과 크기를 해시합니다.
컴파일러는 다음을 의미합니다.

· 컴파일러 업그레이드가 제대로 감지되지 않습니다.

· 캐시된 결과는 다른 컴파일이 있거나 없는 컴파일 간에 공유되지 않습니다.
싸개.

또 다른 사소한 점은 접두사_명령 가 사용되면 ccache는 다른 것을 호출하지 않습니다.
성능을 향상시키는 전처리기를 실행할 때 래퍼.

onworks.net 서비스를 사용하여 온라인으로 ccache 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad