# [emerge] gcc no puede crear ejecutables [resuelto]

## Theasker

Creo que todo viene por que me quedé sin espacio en /var y fuí a /var/log y vi que había demasiados logs grandes, por lo que me puse a borrar cosillas (unos 600 Mb), luego intenté instalar un paquete (exaile) y pedía que recompilase con una use phyton y al hacerlo me dió error de lectura y escritura sobre /var/log/distcc.log

```

F: open_wr

S: deny

P: /var/log/distcc.log

A: /var/log/distcc.log

R: /var/log/distcc.log

C: /usr/bin/distcc /usr/bin/i686-pc-linux-gnu-gcc -pthread -c -O2 -march=pentium4 -pipe -o /var/tmp/ccache/tmp.hash.TheaskerHost.10869.o /var/tmp/ccache/conftest.tmp.TheaskerHost.10869.i 

--------------------------------------------------------------------------------

>>> Failed to emerge dev-lang/python-2.6.4, Log file:

>>>  '/var/tmp/portage/dev-lang/python-2.6.4/temp/build.log'
```

pero el fichero está con permisos de lectura y escritura

```

# ls -la distcc.log 

-rw-rw-rw- 1 root root 1170 ene 10 10:14 distcc.log
```

Luego pensé que la culpa era de distcc y lo desactivé todo de make.conf, lo desinstalé e intenté instalarlo de nuevo pero ...

```

checking for i686-pc-linux-gnu-gcc... i686-pc-linux-gnu-gcc

checking for C compiler default output file name... configure: error: C compiler cannot create executables

See `config.log' for more details.

!!! Please attach the following file when seeking support:

!!! /var/tmp/portage/sys-devel/distcc-3.1-r4/work/distcc-3.1/config.log

 * 

 * ERROR: sys-devel/distcc-3.1-r4 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_configure

 *             environment, line 2652:  Called econf '--without-avahi' '--with-gtk' '--without-gnome' '--disable-Werror' '--with-docdir=/usr/share/doc/distcc-3.1-r4'

 *               ebuild.sh, line  534:  Called die

 * The specific snippet of code:

 *            die "econf failed"

 *  The die message:

 *   econf failed

 * 

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/tmp/portage/sys-devel/distcc-3.1-r4/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/sys-devel/distcc-3.1-r4/temp/environment'.

 * 

>>> Failed to emerge sys-devel/distcc-3.1-r4, Log file:

>>>  '/var/tmp/portage/sys-devel/distcc-3.1-r4/temp/build.log'
```

No que hice al borrar ficheros de /var/log, pero ... no le ha hecho mucha gracia al sistema :/

Gracias anticipadas

----------

## sasho23

Hola, no se si te va a ayudar pero porque no pruebas a reinstalar gcc? Puede que tengan algo con los "log" que has borrado.

   Suerte!

----------

## Theasker

ya lo intenté pero:

 *Quote:*   

> INFO: unpack
> 
> Excluding patch 69_all_gcc43-pr39013.patch
> 
> Applying Gentoo patches ...
> ...

 

----------

## gringo

 *Quote:*   

> checking for i686-pc-linux-gnu-gcc... i686-pc-linux-gnu-gcc
> 
> checking for C compiler default output file name... configure: error: C compiler cannot create executables 

 

podemos ver la salida de un gcc-config -l ?

que tienes en el directorio /usr/lib/distcc/bin ( si es que aún existe) ?

saluetes

----------

## Theasker

```
# gcc-config -l

 [1] i686-pc-linux-gnu-4.3.4 *

# ls /usr/lib/distcc/bin/ -la

total 12

drwxr-xr-x 2 root root 4096 ene 10 11:13 .

drwxr-xr-x 3 root root 4096 mar  4  2008 ..

-rwxr-xr-x 1 root root   78 abr 11  2009 i686-unknown-linux-gnu-wrapper

```

----------

## JotaCE

Aprovecho este hilo para platicarles lo siguiente.

A mi me esta pasando exactamente lo mismo, luego de quitar kde-3.5.10 para instalar kde-4.3.X.

Esta instaldo gcc-4.3.2 (creo) pero me da la impresion que no encuentra la ruta a gcc y por tal razon cualquier programa que decee compilar no es posible hacerlo.

Alguna idea ?

----------

## pelelademadera

a ver si puedo ayudar. yo tengo gcc 4.4.2 y estos son mis ficheros en /etc/env.d, creo que ahi esta el problema

 /etc/env.d/gcc/x86_64-pc-linux-gnu-4.4.2

 *Quote:*   

> LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32"
> 
> MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.2/man"
> 
> INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.2/info"
> ...

 

/etc/env.d/gcc/config-x86_64-pc-linux-gnu

 *Quote:*   

> CURRENT=x86_64-pc-linux-gnu-4.4.2

 

/etc/env.d/05gcc-x86_64-pc-linux-gnu

 *Quote:*   

> MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.2/man"
> 
> INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.2/info"
> 
> LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32"
> ...

 

/etc/env.d/gcc/.NATIVE

 *Quote:*   

> LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32"
> 
> MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.2/man"
> 
> INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.2/info"
> ...

 

chequeen eso por si las moscas, fijense que su version de gcc no es la misma, y mi arquitectura es amd64

saludos

----------

## vincent-

Primero, revisa qué versiones de gcc tienes instaladas:

```
qlist -Iev sys-devel/gcc
```

Segundo, lista todos los perfiles de gcc

```
gcc-config -l
```

Tercero, elige el perfil de la versión que tienes instalada. Si tienes varias versiones instaladas, elige la más nueva

```
gcc-config <numero del perfil>
```

----------

## Theasker

```
$ qlist -Iev sys-devel/gcc

sys-devel/gcc-4.3.4

$ gcc-config -l

 [1] i686-pc-linux-gnu-4.3.4 *

```

Ya lo tengo seleccionado :/, y por más q pienso, ..., se que la culpa tiene que ser que borré algún log q no debería de haber borrado, pero no se el porqué eso tiene que afectar para la compilación de cualquier paquete. Pensé q podía ser un log que usara el gcc pero hice un equery f gcc | grep log, pero no salió nada. Si es que no se ni como buscar ayuda para esto en google, para intentar solucionarlo por mi cuenta.

----------

## JotaCE

 *peratu wrote:*   

> Primero, revisa que versiones de gcc tienes instaladas:
> 
> ```
> qlist -Iev sys-devel/gcc
> ```
> ...

 

Muchas gracias, ese procedimiento funciono para mi.  :Very Happy: 

----------

## quilosaq

Haz esta prueba para ver si puedes compilar a mano.

```
echo 'main(){}' > prueba.c

cc prueba.c
```

Si funciona te creará un prueba.out y si no esperemos ver un mensaje de error.

----------

## Theasker

```
$ ls -l a.out

-rwxr-xr-x 1 theasker users 6916 ene 19 08:55 a.out
```

Si que me lo ha creado, por lo que entonces, entiendo, que el gcc puede compilar, ¿no?

----------

## esteban_conde

Otro palo de ciego: emerge autoconf && emerge automake.

----------

## Stolz

¿Estás usando CFLAGS exóticas? ¿puedes poner la salida de "emerge --info"

----------

## Theasker

Nada exótico, tengo un ordenador ... viejo, es un P4 a 3000

 *Quote:*   

> # emerge --info
> 
> Portage 2.1.6.13 (default/linux/x86/10.0/desktop, gcc-4.3.4, glibc-2.9_p20081201-r2, 2.6.31-gentoo-r6 i686)
> 
> =================================================================
> ...

 

----------

## quilosaq

 *Theasker wrote:*   

> ya lo intenté pero:
> 
>  *Quote:*   The specific snippet of code:
> 
>      "${S}"/configure "$@" || die "failed to run configure";
> ...

 

Vamos a probar mas cosas.

1.- Borra desde /var/tmp/potage/* hacia abajo.

2.- emerge gcc

3.- Si falla, muestra /var/tmp/portage/sys-devel/gcc-4.3.4/temp/build.log y /var/tmp/portage/sys-devel/gcc-4.3.4/temp/environment

----------

## i92guboj

No he leído el 100% del hilo, pero el error en el primer hilo no parece en absoluto un error típico de gcc, sino más bien de portage, y relacionado con los permisos. En cualquier caso, y para tener más información, te sugiero que intentes compilar el mismo paquete de nuevo, y si falla, subas el archivo config.log generado a pastebin, y nos pegues un enlace aquí. Quizás ahí podamos ver algo más claro.

----------

## Theasker

 *Quote:*   

> # rm -r /var/tmp/portage/*
> 
> # emerge gcc
> 
> ...
> ...

 

 *# cat /var/tmp/portage/sys-devel/gcc-4.3.4/temp/build.log wrote:*   

> 
> 
> >>> Unpacking source...
> 
> >>> Unpacking gcc-4.3.4.tar.bz2 to /var/tmp/portage/sys-devel/gcc-4.3.4/work
> ...

 

el # cat /var/tmp/portage/sys-devel/gcc-4.3.4/temp/environment > environment.txt como era muy largo lo he exportado a un fichero y lo he enviado a un servicio de alojamiento de ficheros:

[/quote]

http://ifile.it/yp3lqex/environment.txt

----------

## quilosaq

 *Theasker wrote:*   

>  *Quote:*   
> 
> checking for C compiler default output file name... configure: error: C compiler cannot create executables
> 
> See `config.log' for more details.
> ...

 

Estoy de acuerdo con i92guboj; deberíamos ver ese config.log

----------

## Theasker

 *i92guboj wrote:*   

> No he leído el 100% del hilo, pero el error en el primer hilo no parece en absoluto un error típico de gcc, sino más bien de portage, y relacionado con los permisos. En cualquier caso, y para tener más información, te sugiero que intentes compilar el mismo paquete de nuevo, y si falla, subas el archivo config.log generado a pastebin, y nos pegues un enlace aquí. Quizás ahí podamos ver algo más claro.

 

```
# emerge -vp exaile

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] dev-lang/python-2.6.4  USE="berkdb gdbm ncurses readline sqlite* ssl threads (wide-unicode) xml -build -doc -examples -ipv6 -tk -wininst" 0 kB

[ebuild  N    ] dev-python/sexy-python-0.1.9-r1  0 kB

[ebuild  N    ] media-libs/mutagen-1.18  USE="-test" 0 kB

[ebuild  N    ] dev-python/notify-python-0.1.1-r1  0 kB

[ebuild  N    ] media-sound/exaile-0.3.0_alpha2  USE="hal libnotify libsexy nls -cddb -doc" 346 kB

Total: 5 packages (4 new, 1 reinstall), Size of downloads: 346 kB

```

```
# emerge exaile

...

...

...

checking for i686-pc-linux-gnu-gcc... i686-pc-linux-gnu-gcc

checking for C compiler default output file name... 

configure: error: in `/var/tmp/portage/dev-lang/python-2.6.4/work/Python-2.6.4':

configure: error: C compiler cannot create executables

See `config.log' for more details.

!!! Please attach the following file when seeking support:

!!! /var/tmp/portage/dev-lang/python-2.6.4/work/Python-2.6.4/config.log

 * 

 * ERROR: dev-lang/python-2.6.4 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_configure

 *             environment, line 4175:  Called econf '--with-fpectl' '--enable-shared' '--disable-ipv6' '--with-threads' '--enable-unicode=ucs4' '--infodir=${prefix}/share/info' '--mandir=${prefix}/share/man' '--with-libc=' '--with-system-ffi'

 *               ebuild.sh, line  534:  Called die

 * The specific snippet of code:

 *            die "econf failed"

 *  The die message:

 *   econf failed

 * 

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/tmp/portage/dev-lang/python-2.6.4/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/python-2.6.4/temp/environment'.

 * 

>>> Failed to emerge dev-lang/python-2.6.4, Log file:

>>>  '/var/tmp/portage/dev-lang/python-2.6.4/temp/build.log'

```

cat /var/tmp/portage/dev-lang/python-2.6.4/work/Python-2.6.4/config.log --> http://pastebin.com/m187b763

----------

## quilosaq

Mira si tienes creado el directorio /var/tmp/ccache y si tiene permisos de escritura. Si no lo tienes lo creas y pruebas a emerger otra vez.

----------

## Theasker

Pues no lo tenía creado, lo he creado, le he dado permisos 775 como el directorio /tmp/portage y le he cambiado de propietario:

 *Quote:*   

> # chmod 775 ccache/
> 
> # chown portage:portage ccache/

 

por o que /tmp queda

```
# ls -la

total 28

drwxrwxrwx  6 root    root    4096 ene 20 09:48 .

drwxr-xr-x 17 root    root    4096 nov 24 01:18 ..

drwxrwxr-x 18 portage portage 4096 ene 20 09:48 ccache

drwxrwxrwt  2 root    root    4096 ene 20 07:27 .ICE-unix

drwxrwxr-x  3 portage portage 4096 ene 20 09:50 portage

-rw-------  1 apache  apache   482 ene 20 09:45 sess_c63d57824c64155f743fa0d0f708a409

drwxrwxrwt  2 root    root    4096 ene 20 07:27 .X11-unix
```

Pero da el mismo error

----------

## esteban_conde

otro: equery f binutils

----------

## Theasker

 *esteban_conde wrote:*   

> otro: equery f binutils

 

http://paste2.org/p/622817

----------

## quilosaq

 *Theasker wrote:*   

> Pues no lo tenía creado, lo he creado, le he dado permisos 775 como el directorio /tmp/portage y le he cambiado de propietario:
> 
>  *Quote:*   # chmod 775 ccache/
> 
> # chown portage:portage ccache/ 
> ...

 

ccache debes crearlo en /var/tmp y no en /tmp.

----------

## Theasker

ni me había fijado, claro que no puede estar en /tmp, pensaba que lo había creado en /var/tmp

lo he creado igual que antes con 775 y portage:portage y ... nada  :Sad: 

----------

## esteban_conde

emerge -pv python si python no está bien instalado puede arrojar ese mensaje can't create executables ya que es con python con el que se enlazan casi todas las herramientas del compilador.

----------

## Theasker

 *esteban_conde wrote:*   

> emerge -pv python si python no está bien instalado puede arrojar ese mensaje can't create executables ya que es con python con el que se enlazan casi todas las herramientas del compilador.

 

Al instalar exaile con un cambio de use, lo primero que intenta reinstalar es python, y da ese error.

```
# emerge -pv python

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] dev-lang/python-2.6.4  USE="berkdb gdbm ncurses readline sqlite* ssl threads (wide-unicode) xml -build -doc -examples -ipv6 -tk -wininst" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

```

----------

## quilosaq

Mas pruebas

ls -l /usr/lib/ccache/bin/i686-pc-linux-gnu-gcc

echo 'main() {}' > prueba.c

/usr/lib/ccache/bin/i686-pc-linux-gnu-gcc prueba.c

su -

echo $CCACHE_PREFIX

----------

## Theasker

me parece que todo ha funcionado perfecto

```
# ls -l /usr/lib/ccache/bin/i686-pc-linux-gnu-gcc

lrwxrwxrwx 1 root root 15 nov 24 02:27 /usr/lib/ccache/bin/i686-pc-linux-gnu-gcc -> /usr/bin/ccache

# echo 'main() {}' > prueba.c

# /usr/lib/ccache/bin/i686-pc-linux-gnu-gcc prueba.c

# su -

# echo $CCACHE_PREFIX

#

```

----------

## esteban_conde

 *Quote:*   

> USE="berkdb gdbm ncurses readline sqlite* ssl threads (wide-unicode) xml -build -doc -examples -ipv6 -tk -wininst" 
> 
> emerge python

 

o mejor que eso mete las use que te faltan a /etc/make.conf y luego ejecuta emerge tengo el presentimiento de que el desaguisado viene por python ya que gcc crea ejecutables sin embargo por alguna razón los archivos configure arrojan un error (no he localizado bien en que punto del script) y he recordado que al cambiar de python-2.4 a python-2.5 me pasó algo parecido a lo que te pasa a ti ahora (no estoy seguro pero creo que lo arreglé emergiendo python con todas sus USEs y corriendo python-upgrade <-->upgrade-python es posible que tambien tuviera que emerger portage)

----------

## Theasker

 *esteban_conde wrote:*   

>  *Quote:*   USE="berkdb gdbm ncurses readline sqlite* ssl threads (wide-unicode) xml -build -doc -examples -ipv6 -tk -wininst" 
> 
> emerge python 
> 
> o mejor que eso mete las use que te faltan a /etc/make.conf y luego ejecuta emerge tengo el presentimiento de que el desaguisado viene por python ya que gcc crea ejecutables sin embargo por alguna razón los archivos configure arrojan un error (no he localizado bien en que punto del script) y he recordado que al cambiar de python-2.4 a python-2.5 me pasó algo parecido a lo que te pasa a ti ahora (no estoy seguro pero creo que lo arreglé emergiendo python con todas sus USEs y corriendo python-upgrade <-->upgrade-python es posible que tambien tuviera que emerger portage)

 

He metido esta línea en el make.conf

```
# uses temporales para python

USE="${USE} berkdb gdbm ncurses readline sqlite* ssl threads (wide-unicode) xml -build -doc -examples -ipv6 -tk -wininst"

```

y al hacer emerge python me pasa lo mismo

----------

## Theasker

Pero yo sigo pensando q fué por borrar algún log que no debería. Volvamos al principio y como pasó:

- Estaba en el trabajo agregando páginas a la wiki, y empezó a dar muchos errores que parecían de php o permisos de directorios sin haber tocado yo nada.

- Después de reinstalar dokuwiki y probar con permisos 777 a todo el directorio de dokuwiki, vi que seguía todo igual.

- Luego vi que /var estaba sin espacio y no sabía de donde sacar espacio y pensé en /var/log y me puse a borrar los los más grandes, ya que vi que tenía más de 600 Mb en logs.

- Justo después de eso hice un emerge --sync && emerge uvDN world y ... empezó la pesadilla.

Borré los logs porque al no ser nada esencial (o eso pensaba yo) supuse que si el programa los necesitaría daría un mensaje de error y lo creaba yo con touch o los crearía automáticamente.

----------

## esteban_conde

 *Quote:*   

> Estaba en el trabajo agregando páginas a la wiki, y empezó a dar muchos errores que parecían de php o permisos de directorios sin haber tocado yo nada.
> 
> 

 

pues aunque si es lo que supongo ya será un poco tarde ¿que resulta de df -h?.

----------

## Theasker

Eso ya lo controlé cuando me di cuenta que no me quedaba sitio en /var

```
# df -h

S.ficheros          Tamaño Usado  Disp Uso% Montado en

/dev/hda2             9,2G  6,3G  2,5G  72% /

udev                   10M  164K  9,9M   2% /dev

/dev/hda5             419M  353M   42M  90% /usr/portage

/dev/hda6             3,7G  2,0G  1,6G  57% /usr/portage/distfiles

/dev/hda7             1,9G  1,4G  357M  80% /var

/dev/hda8             3,3G  1,7G  1,5G  55% /usr/src

/dev/hda9             169G   75G   85G  47% /home

/dev/hdb6             8,7G   82M  8,2G   1% /tmp

/dev/hdb6             8,7G   82M  8,2G   1% /var/tmp

/dev/hdb7             244G  225G  6,8G  98% /datos

/dev/shm              759M     0  759M   0% /var/shm

```

----------

## esteban_conde

Uuuuh.. si tienes el tarball de portage, yo optaria por expandirlo de nuevo.

----------

## Theasker

Si, eso lo tengo pendiente, pero no puede ser la causa del problema

----------

## quilosaq

Prueba:

FEATURES="-ccache" emerge gcc

----------

## Theasker

 *quilosaq wrote:*   

> Prueba:
> 
> FEATURES="-ccache" emerge gcc

 

Ha funcionado, ha compilado el gcc y he probado con otros paquetes y funciona la compilación sólo si pongo FEATURES="-ccache" antes.

He probado a reemerger ccache ejecutando FEATURES="-ccache" emerge ccache por si era algún problema de fichero corrupto, pero después de instalarlo, sigue dando el mismo error, sólo funciona si desconecto el ccache poniendo FEATURES="-ccache".

Viendo ahora un poco de luz sobre el asunto, dónde puede estar el fallo?.

Gracias anticipadas de nuevo a todos y bueno, ya parece que va saliendo el tema.

----------

## quilosaq

Prueba:

FEATURES="-cache" emerge distcc

Luego mira si puedes emerger otros paquetes sin modificar FEATURES.

----------

## Theasker

 *quilosaq wrote:*   

> Prueba:
> 
> FEATURES="-cache" emerge distcc
> 
> Luego mira si puedes emerger otros paquetes sin modificar FEATURES.

 

Pues ... ha funcionado, pero ... alguien me podría explicar el porqué de lo que ha pasado y porqué se ha arreglado asi?

Es una pena, pero yo sólo nunca se me habría ocurrido, me parece que siempre seré un novato y cada vez me da la impresión que se menos de linux  :Sad: .

Gracias a todos por la preocupación y la ayuda.

----------

## quilosaq

No te puedo decir exactamente que ha pasado pero te diré mi parecer.

Antes del "problema" tenías. instalado ccache y distcc. La instalacion de ccache hace que el programa ejecutable ccahe "se ponga en medio" (front-end lo llaman por ahí) cuando otro programa llama a gcc para compilar. Igualmente distcc hace lo mismo y "se pone en medio" entre ccache y gcc.

En esta situación tu borraste lo que fuera (no necesariamente los log) que hizo que distcc no funcionara. Luego eliminaste distcc. Como el sistema no estaba bien, se eliminó distcc pero no se actualizó la información a ccache. Para ccache, cuando había que compilar algo buscaba distcc.

Al emerger con FEATURE=-ccache" portage no usa ccahe y llama directamente a gcc para compilar. El resto creo que es facil...

----------

## Theasker

vale, lo entiendo perfectamente, igual revistando los emerge -C que hice lo podría haber sacado, pero ni se me ocurrió, evidentemente en algo tenía yo razón y no me lo explicaba; la causa no había sido el borrado de logs sino el del distcc.

Gracias de nuevo a todos y bueno nunca te acostarás sin saber una cosa más.

----------

## JotaCE

se puede poner esta line en /etc/make.conf  ????

```
FEATURES="-ccache"
```

----------

