ccache

Slackware FAQ - czyli baza pytań i odpowiedzi.

Moderatorzy: Moderatorzy, Administratorzy

ODPOWIEDZ
Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

ccache

Post autor: Zielony » 2008-01-25, 22:17

[center]ccache[/center]

Spis treści:
  • 1. Wprowadzenie
    2. Konfiguracja
    • a. ustawienia zmiennych
      b. podlinkowanie kompilatorów
      c. rozmiar cache'a
      d. współdziałanie z distcc
1. Wprowadzenie
ccache służy do prowadzenia cache'a kompilatorów. Jeżeli kompilujemy plik przy jego udziale, zapisuje on wyjście, napotkane ostrzeżenia itd. Przy następnej kompilacji tego samego pliku odtworzy to wszystko z cache'a, oszczędzając czas i zasoby.

Paczka z ccache znajduje się w repozytorium Slackware.

2. Konfiguracja
2. a. ustawienia zmiennych

ccache nie posiada swojego pliku konfiguracyjnego, dlatego też ustawienia trzeba podać mu poprzez zmienne środowiskowe. Najlepiej dopisać je w działającym globalnie /etc/profile lub w działającym dla danego użytkownika ~/.bash_profile. Oto przykład:

Kod: Zaznacz cały

export CCACHE_DIR="/var/tmp/ccache"
export CCACHE_LOGFILE="/var/log/ccache"
CCACHE_DIR wskazuje na katalog, w którym przechowywane będą pliki cache'a. Domyślnie jest nim ~/.ccache. CCACHE_LOGFILE to ścieżka do pliku, gdzie ma być zapisywany log. Domyślnie nie jest on tworzony w ogóle. Więcej z nich opisanych zostało w manualu.

Jeżeli odpowiadają nam domyślne ustawienia, nie musimy eksportować żadnych zmiennych. Możemy również wyeksportować je np. tylko dla danego terminala, by skompilować z takimi ustawieniami konkretny pakiet, co daje nam możliwość utworzenia osobnego katalogu dla cache'a dla niego.

2. b. podlinkowanie kompilatorów
Oczywiście samo posiadanie ccache w systemie nie spowoduje jego działania. Trzeba jeszcze sprawić, by kompilatory uruchamiały się za jego pośrednictwem. Ręcznie można zrobić to tak:

Kod: Zaznacz cały

ccache <kompilator> <parametry kompilatora>
Natomiast by globalnie przypisać kompilatory do tego programu, wystarczy utworzyć symlinki na niego wskazujące:

Kod: Zaznacz cały

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
Zadziała to pod warunkiem, że /usr/local/bin znajduje się przed katalogiem z naszymi kompilatorami. Gdy posiadamy jeszcze inne kompilatory albo mają one inne nazwy, należy postąpić podobnie. Od teraz wywołując polecenie kompilatora, wywołamy ccache. Dotyczy to również plików Makefile.

Może zaistnieć sytuacja, że jednak nie chcielibyśmy tego stosować tak globalnie, ale jedynie dla danego użytkownika albo dla danego pakietu. Wtedy możemy ustawić zmienne środowiskowe, mające wskazywać na kompilatory (rozpoznawane przez configure, znajdujące się w Makefile). Domyślnie są to:

Kod: Zaznacz cały

export CC="ccache gcc"
export CXX="ccache g++"
Dopisujemy to do /etc/profile (można stosować równolegle bądź alternatywnie w stosunku do linkowania), ~/.bash_profile czy wywołujemy w terminalu.

2. c. rozmiar cache'a
Pozostało określić maksymalny rozmiar cache'a:

Kod: Zaznacz cały

ccache -M <rozmiar>
gdzie rozmiar to liczba z przyrostkiem, np. 500M (pomijamy B).

2. d. współdziałanie z distcc
Możemy też pokusić się o współdziałanie ccache z distcc. Wtedy kompilowane na zdalnych komputerach pliki także będą cache'owane. Wystarczy wyeksportować zmienną CCACHE_PREFIX (również wypadałoby dopisać to do któregoś z podanych już plików):

Kod: Zaznacz cały

export CCACHE_PREFIX="distcc"
Pomijam tu oczywiście konfigurację distcc.

Po więcej informacji zapraszam do manuala.

Autor: Zielony
Ostatnio zmieniony 2008-02-14, 21:46 przez Zielony, łącznie zmieniany 3 razy.
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

ODPOWIEDZ