# La he "liao" parda (GCC no compila más)

## Latinvs

Buenas.

Tras actualizar varias cosas con sus respectivas dependencias, entre ellas glibc y alguna docena más a la que no presté mucha atención, resulta que GCC ya no funciona. intente instalar l oque intente me devuelve siempre un error que con ligeras variaciones tiene en común:

```
 * Call stack:

 *     ebuild.sh, line  54:  Called src_compile
```

y acaban con un "die"

Mirando el log de la instalación de por ejemplo el paquete mpfr, al final dice:

```
checking for C compiler default output file name... 

configure: error: in `/var/tmp/portage/dev-libs/mpfr-2.4.2_p3/work/mpfr-2.4.2':

configure: error: C compiler cannot create executables

See `config.log' for more details.
```

Al hacer un "grep error" a config.log salen estos mensajes:

```

/usr/libexec/gcc/x86_64-pc-linux-gnu/4.4.4/cc1: error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory

configure:3381: error: in `/var/tmp/portage/sys-devel/gcc-4.4.4-r2/work/build':

configure:3384: error: C compiler cannot create executables
```

La biblioteca libgmp.so.10 está en /usr/lib64/ no sé si tengo quizá que copiarla a otro sitio, o enlazarla, como en algunos hilos parecidos he podido leer, o si el problema viene por otro lado.

Evidentemente al no compilar no puedo hacer un revdep-rebuild ni nada que implique instalación de nada.

No he cambiado nada en mi make.conf y sólo tengo una versión de GCC, aunque sospecho que ésta puede que se haya instalado durante la actualización mencionada y por tanto hace unas horas tuviese otra.

Por cierto, y aunque suene a "off-topic" creo que puede tener relación, ¿hay alguna forma de decirle a etc-update que haga una copia de los archivos que va a machacar?

Gracias y saludos.

----------

## quilosaq

Mira que te dice

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

y selecciona algún perfil si no lo está.

----------

## Latinvs

 *quilosaq wrote:*   

> Mira que te dice
> 
> ```
> # gcc-config -l
> ```
> ...

 

Ya lo había probado, por eso sabía que sólo tenía una versión de GCC, perdón por no mencionarlo antes. Me dice que:

```

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

```

----------

## quilosaq

Esta conversación es lo mas rápido y directo que he encontrado.

----------

## Latinvs

 *quilosaq wrote:*   

> Esta conversación es lo mas rápido y directo que he encontrado.

 

¡La virgen! XDD

Bueno, yo me esperaba algo como toquetear tal fichero de configuración o enlazar tal biblioteca, jeje, pero si no hay otro remedio supongo que mañana, con más ganas y energía, me pondré a ello.

Gracias por la ayuda.

----------

## esteban_conde

Posiblemente tengas la opcion user activada la linea que monta / en fstab (creo recordar que hubo un post parecido). *sacado de man mount 8 wrote:*   

> user   Permitir  a  un  usuario  ordinario  montar el sistema de
> 
>                      ficheros. Esta opcion implica las opciones noexec, nosuid
> 
>                      y  nodev  (a  menos  que se sustituyan por otras subsigu-
> ...

 noexec implica que no se pueden crear ejecutables en el sistema de ficheros y asimismo noexec va implicita en la opcion user.

----------

## Latinvs

 *esteban_conde wrote:*   

> Posiblemente tengas la opcion user activada la linea que monta / en fstab (creo recordar que hubo un post parecido). *sacado de man mount 8 wrote:*   user   Permitir  a  un  usuario  ordinario  montar el sistema de
> 
>                      ficheros. Esta opcion implica las opciones noexec, nosuid
> 
>                      y  nodev  (a  menos  que se sustituyan por otras subsigu-
> ...

 

No es el caso. No he tocado nada de la configuración de mi sistema más allá de los archivos que etc-update me pedía. La línea de mi / sigue como siempre:

```
/dev/hda1       /               ext4    defaults        0       1

```

Se agradece la ayuda, de todas formas.

Estaba preparándome para probar la sugerencia de quilosaq, pero considerando que una vez que mi GCC vuelva a funcionar voy a tener que recompilar absolutamente todo mi sistema para asegurar que todo quede bien, creo que me va a llevar casi el mismo tiempo reinstalar, y así aprovecho para hacer limpieza.

Gracias a todos, y como no creo que se pueda decir que el problema con GCC se haya resuelto dejo el hilo abierto.

----------

## agdg

 *Latinvs wrote:*   

>  *esteban_conde wrote:*   Posiblemente tengas la opcion user activada la linea que monta / en fstab (creo recordar que hubo un post parecido). *sacado de man mount 8 wrote:*   user   Permitir  a  un  usuario  ordinario  montar el sistema de
> 
>                      ficheros. Esta opcion implica las opciones noexec, nosuid
> 
>                      y  nodev  (a  menos  que se sustituyan por otras subsigu-
> ...

 

Tan solo necesitas instalar el compilador. Por lo que he visto en los errores que has posteado, usas arquitectura x86_64. Te he compilado la última versión de GCC (gcc-4.4.4-r2.tbz x86_64), tan solo debes descargarla a /usr/portage/packages/sys-devel/gcc-4.4.4-r2.tbz2. Solo sirve esa ruta, si quieres usar otra ruta, deberás indicarselo a portage definiendo PKGDIR en /etc/make.conf.

Una vez tengas el binario en /usr/portage/packages/sys-devel/:

emerge -avk  /usr/portage/packages/sys-devel/gcc-4.4.4-r2.tbz2

Listo, ya funciona todo, aunque recomendaria un revdep-rebuild y un emerge --update --deep world

----------

## quilosaq

 *esteban_conde wrote:*   

> ...noexec implica que no se pueden crear ejecutables en el sistema de ficheros...

 Creo que la opción noexec lo que impide es que se puedan ejecutar archivos contenidos en ese sistema de archivos (fs)  pero no la creación de archivos con el atributo de ejecutable. Es decir en un fs con noexec se podría crear un ejecutable si el compilador (y sus dependencias ejecutables) residieran en fs que no fueran noexec.

----------

## esteban_conde

 *Quote:*   

> opción noexec lo que impide es que se puedan ejecutar archivos contenidos en ese sistema de archivos

 

Se puede hacer la prueba poniendo user en las opciones de fstab y reiniciando, despues es cuestion de compilar algo.

----------

## esteban_conde

 *Quote:*   

> quilosaq:
> 
> opción noexec lo que impide es que se puedan ejecutar archivos contenidos en ese sistema de archivos
> 
> Se puede hacer la prueba poniendo user en las opciones de fstab y reiniciando, despues es cuestion de compilar algo

 

Pues efectivamente tenias razón   :Embarassed:  , perdona que dudara pero me parecia que lo habia probado hace tiempo y que el resultado era que no compilaba en ese sistema de ficheros cuando lo que pasa es que no llega a arrancar pues la mayoria de los scripts no se ejecutan a no ser que añadas exec detras de user.

----------

## Latinvs

 *agdg wrote:*   

> 
> 
> Tan solo necesitas instalar el compilador. Por lo que he visto en los errores que has posteado, usas arquitectura x86_64. Te he compilado la última versión de GCC (gcc-4.4.4-r2.tbz x86_64), tan solo debes descargarla a /usr/portage/packages/sys-devel/gcc-4.4.4-r2.tbz2. Solo sirve esa ruta, si quieres usar otra ruta, deberás indicarselo a portage definiendo PKGDIR en /etc/make.conf.
> 
> Una vez tengas el binario en /usr/portage/packages/sys-devel/:
> ...

 

A buenas horas lo veo... 

Muchas gracias por la molestia, pero ayer al mediodía me puse a reinstalar todo y no he vuelto a pasar por el foro hasta ahora. :-/ De haberlo visto antes me habría ahorrado la reinstalación, que en Gentoo no es precisamente rápida.

En fin, las prisas es lo que tienen; mi novia necesitaba instalar Openoffice, y el peligro de que se hartase y se instalase Windows y Word era grande. >_<

Además tenía mucha mi**da instalada en esa máquina, que no es precisamente potente, así que por l omenos el tedioso proceso ha servido para hacer una limpieza radical.

Gracias de nuevo, y saludos.

----------

