# ccache und gcc-4.x.x

## Jorgo

Hallo zusammen,

mir ist bei diversen emerge Vorgängen aufgefallen, das immer auf den gcc3 zurückgegriffen wurde.Obwohl gcc-4.4.4 installiert ist.

Compiliervorgänge nutzten oftmals trotz Vorgabe in der make.con von Makeopts="-j4" meistens nur einen Prozesser. Ich hatte seit längerer Zeit ccache hierzu im Verdacht und bin auf folgenden Bug-Eintrag für Debian gestoßen:

http://us.generation-nt.com/bug-532169-ccache-please-add-support-gcc-4-4-help-168589971.html

```
which cc

/usr/lib/ccache/cc
```

```

which gcc-4.4.4

/usr/bin/gcc-4.4
```

```
ls /usr/lib/ccache/ | grep 4.4 | wc

0 0 0
```

Resultat identisch auf meinem PC.

Ich habe mir daraufhin mal das "gefixte" Debian-Paket angeschaut und festgestellt, dass im Verzeichnis /usr/lib/ccache/ diverse Links der Form Compiler -> ccache angelegt sind. Das /usr/lib/ccache/ Verzeichnis unter Gentoo ist allerdings leer.

```
 c++ -> ../../bin/ccache

 cc -> ../../bin/ccache

 g++ -> ../../bin/ccache

 g++-2.95 -> ../../bin/ccache

 g++-3.0 -> ../../bin/ccache

 g++-3.2 -> ../../bin/ccache

 g++-3.3 -> ../../bin/ccache

 g++-3.4 -> ../../bin/ccache

 g++-4.0 -> ../../bin/ccache

 g++-4.1 -> ../../bin/ccache

 g++-4.2 -> ../../bin/ccache

 g++-4.3 -> ../../bin/ccache

 g++-4.4 -> ../../bin/ccache

 gcc -> ../../bin/ccache

 gcc-2.95 -> ../../bin/ccache

 gcc-3.0 -> ../../bin/ccache

 gcc-3.2 -> ../../bin/ccache

 gcc-3.3 -> ../../bin/ccache

 gcc-3.4 -> ../../bin/ccache

 gcc-4.0 -> ../../bin/ccache

 gcc-4.1 -> ../../bin/ccache

 gcc-4.2 -> ../../bin/ccache

 gcc-4.3 -> ../../bin/ccache

 gcc-4.4 -> ../../bin/ccache

 i586-mingw32msvc-c++ -> ../../bin/ccache

 i586-mingw32msvc-cc -> ../../bin/ccache

 i586-mingw32msvc-g++ -> ../../bin/ccache

 i586-mingw32msvc-gcc -> ../../bin/ccache

 x86_64-linux-gnu-g++ -> ../../bin/ccache

 x86_64-linux-gnu-g++-2.95 -> ../../bin/ccache

 x86_64-linux-gnu-g++-3.0 -> ../../bin/ccache

 x86_64-linux-gnu-g++-3.2 -> ../../bin/ccache

 x86_64-linux-gnu-g++-3.3 -> ../../bin/ccache

 x86_64-linux-gnu-g++-3.4 -> ../../bin/ccache

 x86_64-linux-gnu-g++-4.0 -> ../../bin/ccache

 x86_64-linux-gnu-g++-4.1 -> ../../bin/ccache

 x86_64-linux-gnu-g++-4.2 -> ../../bin/ccache

 x86_64-linux-gnu-g++-4.3 -> ../../bin/ccache

 x86_64-linux-gnu-g++-4.4 -> ../../bin/ccache

 x86_64-linux-gnu-gcc -> ../../bin/ccache

 x86_64-linux-gnu-gcc-2.95 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-3.0 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-3.2 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-3.3 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-3.4 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-4.0 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-4.1 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-4.2 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-4.3 -> ../../bin/ccache

 x86_64-linux-gnu-gcc-4.4 -> ../../bin/ccache
```

Zwecks eines kleinen Tests habe ich mal die Dateien entsprechend unter meiner Gentoo-Installation in /us/lib/ccache/ eingefügt. Resultat:

ccache scheint nun gcc-4.4 zu unterstützen. Compiliervorgänge nutzen wieder alle 4 Prozessoren.

Einbildung oder ist da ein Bug bei der Art wie ccache auf Gentoo eingerichtet ist?

```
jorgo # which cc

/usr/bin/cc

jorgo # which gcc-4.4

which: no gcc-4.4 in (/sbin:/bin:/usr/sbin:/usr/bin)

jorgo # which gcc-4.4.4

/usr/bin/gcc-4.4.4

jorgo # ls /usr/lib/ccache/ | grep 4.4 | wc

      4       4      66

```

----------

## 69719

gcc-config sollte dir weiterhelfen.

----------

## Jorgo

??? In wie fern soll mir hier gcc-config weiterhelfen?

----------

## Josef.95

 *Jorgo wrote:*   

> ??? In wie fern soll mir hier gcc-config weiterhelfen?

 

Nunja, es wäre hilfreich zu sehen welcher gcc den wirklich genutzt wird 

```
# gcc-config -l
```

 (kleines L)

Zudem wäre evtl. auch die Ausgabe von 

```
# ccache -s
```

 aus einer root Shell hilfreich.

----------

## Jorgo

Die von mir oben beschrieben Änderungen sind ja jetzt drin.

und es funktioniert jetzt auch alles wieder wie früher.

Mit dem Unterscheid, dass ich jetzt die entsprechenden symb. Links wie im Debian Paket unter /usr/lib/ccache/ habe.

Ich habe auch nur den gcc-4.4.4-r1 hier laufen. 

```
jorgo # gcc-config -l

 [1] x86_64-pc-linux-gnu-4.4.4 *

```

```
jorgo # ccache -s

cache directory                     /var/tmp/ccache

cache hit                         166593

cache miss                        380450

called for link                    46597

multiple source files                 40

compile failed                     11803

ccache internal error                  3

preprocessor error                  4797

not a C/C++ file                   28605

autoconf compile/link              67414

unsupported compiler option         9459

no input file                      29074

files in cache                     85205

cache size                         948.3 Mbytes

max cache size                    1024.0 Mbytes

```

----------

