HOWTO Migrar a GCC 3.4

De Gentoo Linux Wiki

Este articulo es parte de las series de HOWTO.
Kernel & Hardware Red y Servicios Portage Relacionado con el Sistema Servidor X Juegos Misceláneos

Tabla de contenidos

[editar] Introducción

GCC: compilador usado en muchos sistemas basados en *nix y *BSD en todo el mundo, es uno de los componentes más básicos de tu sistema, te permite compilar e instalar programas nuevos a partir del codigo fuente.

La mayoría de los sistemas Gentoo usan el (probado y estable) compilador GCC 3.3.x. Puedes seguir con él si quieres, pero entonces dudo que quieras seguir leyendo esto ;). Para aquellos que no puedan esperar a que la versión 3.4 sea marcada estable, este tutorial les ayudara a actualizar.

[editar] Actualizar el Profile

Nota: Los siguientes pasos pueden ser ignorados si has instalado a partir de un livecd versión 2004.3 o previamente cambiaste al nuevo profile.

Primero, actualiza tu profile actual por la última version disponible que es completamente compatible con GCC 3.4. El siguiente ejemplo está basado en una arquitectura x86, ajústalo de acuerdo a tu sistema si no está sobre x86:

# rm -f /etc/make.profile
# ln -sf /usr/portage/profiles/default-linux/x86/2004.3 /etc/make.profile

[editar] Chequea tus CFLAGS

La CFLAG -mcpu= ha sido desechada en GCC 3.4, usa en su lugar -mtune o mejor aún, -march=.

[editar] Desenmascara GCC 3.4

NOTA: Todos los ejemplos usarán la arquitectura x86. Si estás usando AMD64 u otra arquitectura la salida de tus comando variará acordemente. Necesitamos realizar algunos pasos para permitirle a portage instalar GCC 3.4. Antes que nada, sincroniza tu árbol portage para obtener el último ebuild para GCC:

# emerge sync

Dependiendo de tu arquitectura, la versión de GCC 3.4 puede ser marcada como testing o estable. a) Si tu arquitectura es una de las que tienen la version 3.4 de GCC en estable puedes saltar esta sección; b) Si no sigue leyendo esta sección; c) Si no sabes por favor lee http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1#doc_chap4

Si no existe, tenemos que crear el archivo package.keywords:

# mkdir /etc/portage
# nano -w /etc/portage/package.keywords

Ahora agrega los siguientes paquetes al archivo package.keywords con el siguiente comando:

# echo "sys-devel/gcc ~x86" >> /etc/portage/package.keywords
# echo "sys-libs/glibc ~x86" >> /etc/portage/package.keywords
# echo "sys-libs/libstdc++-v3 ~x86" >> /etc/portage/package.keywords
# echo "sys-devel/gcc-config ~x86" >> /etc/portage/package.keywords

Para asegurarte que lo hiciste bien realiza un pretend:

#emerge -pv gcc

El comando anterior debe devolverte esto:

[ebuild N ] sys-libs/glibc-2.3.x
[ebuild N ] sys-libs/libstdc++-v3
[ebuild N ] sys-devel/gcc-3.4.2-xx

[editar] Instalando GCC 3.4

Emerge GCC 3.4:

# emerge -v gcc

Cambia el profile actual por el nuevo, para saber cual es teclea:

# gcc-config -l

Lo anterior te devolverá algo parecido a esto:

[1] i386-pc-linux-gnu-3.3.4 *
[2] i686-pc-linux-gnu-3.4.3 
[3] i686-pc-linux-gnu-3.4.3-hardened
[4] i686-pc-linux-gnu-3.4.3-hardenednopie
[5] i686-pc-linux-gnu-3.4.3-hardenednossp

Cambia el profile con el siguiente comando, en lugar del nombre puedes usar su número:

# gcc-config i686-pc-linux-gnu-3.4.3
# source /etc/profile

NOTA: El último número de la versión (3.4.x) variará dependiendo de futuras versiones de GCC.

Para verificar el cambio teclea:

# gcc-config -l

Lo cual debe devolverte:

[1] i386-pc-linux-gnu-3.3.4 
[2] i686-pc-linux-gnu-3.4.3 *
[3] i686-pc-linux-gnu-3.4.3-hardened
[4] i686-pc-linux-gnu-3.4.3-hardenednopie
[5] i686-pc-linux-gnu-3.4.3-hardenednossp

[editar] Re-emergiendo tu sistema y los paquetes en World

Ahora puedes actualizar tu sistema para que compile con la nueva versión de gcc:

# emerge -e system 

También puedes reemerger todos tus paquetes que están en el archivo world, sin embargo el proceso tarda demasiado, pero si estas seguro que tus paquetes incrementarán sensiblemente su velocidad puedes hacerlo:

# emerge -e system && emerge -e world

Lo anterior remergerá tanto el sistema base como el resto de los paquetes, sin embargo el mismo efecto se produciría con el paso del tiempo al actualizar cada paquete.

[editar] Problemas

[editar] General

El paquete GCC se maneja por slots, es decir se pueden tener varias versiones de ese mismo paquete, si observas que algún programa no compila con GCC 3.4 puedes regresar a la versión anterior sólo para ese programa, el procedimiento es el mismo que usaste para actualizar a la nueva versión (es decir con gcc-config). Antes de realizar eso puedes intentar usar este comando, (en lugar de 3.3.4 pon tu version previa de gcc):

# fix_libtool_files.sh 3.3.4 

Si falla de nuevo, anota el paquete problemático y continua la compilación con el siguiente comando:

# emerge --resume --skipfirst

[editar] ATI Drivers

Si estás usando los drivers de ATI (fglrx) deberas recompilar el kernel y los módulos de ati:

# cd /usr/src/linux && make && make modules_install
# modules-update
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/[your kernelfile here]
# emerge ati-drivers

Si el módulo no carga al inicio, trata de cargarlo con el comando modprobe.

[editar] Créditos

Traducido de la version original en Ingles por Navegante

Herramientas personales