Flags para una compilación exitosa a 64 bits

Soy aun de los ociosos que les encanta compilar sus propios paquetes en todas las distros (incluidas debian, fedora, gentoo, etc); por lo que siempre me preguntan las flags del pre-procesador, del gcc y otros detalles:

He aqui un vista a mis reglas de compilación para un CPU Core2Duo con EMT64:

MKOPTS=”-j3″ CFLAGS=”-O3″ CXXFLAGS=”-O3 -fPIC -mtune=nocona -march=nocona \
-pipe -fomit-frame-pointer -msse -fexceptions -fno-strict-aliasing -fPIC -Wall -fno-rtti -fno-strict-aliasing \
-ffast-math -mfpmath=sse,387 -finline-functions -foptimize-sibling-calls -m64\
-floop-optimize -fprefetch-loop-arrays -fforce-addr -fexpensive-optimizations” \
./configure –build=x86_64-pc-linux-gnu

Una guia rápida de arquitecturas: (flags para mtune y march):

CPU:                                       Flag

Pentium 4, Pentium M         : pentium4

Athlon, Athlon XP                 : athlon

AMD Opteron                                                :  k8

Pentium D, P4 HT, Core 2                           : prescott

pentium D 64 bits – Core 2 Duo 64 bits    :  nocona

Cual es el mejor CFLAG?

Las opciones transcurren entre -Os (compilado para codigo pequeño, posiblemente más lento); -O1 (opcion básica y por defecto), -O2 (optimizado para performance, cuidando la estabilidad de la aplicación), -O3 (compilado para máximo rendimiento, algunas optimizaciones agresivas pueden hacer inestable el código, debe probarse y usarse con precaución).

32 o 64 bits?

La posibilidad de usar enteros de 128 bits; computos multi-CPU y una arquitectura más robusta, permiten decir sin dudas que si tenemos 64 bits; compilar nativo es la opción; para ejecutar aplicaciones 32 bits en un ambiente de 64 bits; simplemente tenemos que instalar lib32.

Mejor aritmética que el co-procesador 387?

La aritmética de coma flotante SSE está disponible para compilar desde gcc 3.4; con fpmath podemos decir si queremos SSE, i387 o ambas.

Un ejemplo de apache 2.2.6 compilado para debian es la siguiente:

CC=”gcc” CXX=”gcc” CFLAGS=”-O3″ CXXFLAGS=”-O3 -fPIC -mtune=nocona -march=nocona \
-pipe -fomit-frame-pointer -msse -fexceptions -fno-strict-aliasing -fPIC -Wall -fno-rtti -fno-strict-aliasing \
-ffast-math -mfpmath=sse,387 -finline-functions -foptimize-sibling-calls \
-floop-optimize -fprefetch-loop-arrays -fforce-addr -fexpensive-optimizations” \
./configure –build=x86_64-linux-gnu –disable-maintainer-mode –disable-dependency-tracking \
–enable-layout=Debian –with-program-name=apache2 \
–enable-echo –enable-so –enable-rewrite –with-mpm=worker \
–with-ldap=yes –with-ldap-include=/usr/include –with-ldap-lib=/usr/lib \
–with-suexec-caller=www-data –with-suexec-bin=/usr/lib/apache2/suexec \
–with-suexec-docroot=/var/www –with-suexec-userdir=public_html \
–with-suexec-logfile=/var/log/apache2/suexec.log –enable-suexec=shared –enable-authn-alias=shared \
–enable-authnz-ldap=shared –enable-mime-magic –enable-cern-meta –enable-expires –enable-deflate \
–enable-disk-cache=shared –enable-cache=shared –enable-mem-cache=shared –enable-file-cache=shared \
–enable-cern-meta=shared –enable-dumpio=shared –enable-ext-filter=shared \
–enable-charset-lite=shared –enable-cgi=shared \
–enable-dav-lock=shared –enable-log-forensic=shared \
–enable-log-config –enable-logio \
–enable-ldap=shared –enable-proxy=shared \
–enable-proxy-connect=shared –enable-proxy-ftp=shared \
–enable-proxy-http=shared –enable-proxy-ajp=shared \
–enable-proxy-balancer=shared –enable-ssl=shared \
–enable-authn-dbm=shared –enable-authn-anon=shared \
–enable-authn-dbd=shared –enable-authn-file=shared \
–enable-authn-default=shared –enable-authz-host=shared \
–enable-authz-groupfile=shared –enable-authz-user=shared \
–enable-authz-dbm=shared –enable-authz-owner=shared \
–enable-authnz-ldap=shared –enable-authz-default=shared \
–enable-auth-basic=shared –enable-auth-digest=shared \
–enable-dbd=shared –enable-deflate=shared \
–enable-include=shared –enable-filter=shared \
–enable-env=shared –enable-mime-magic=shared \
–enable-expires=shared –enable-headers=shared \
–enable-ident=shared –enable-usertrack=shared \
–enable-unique-id=shared –enable-setenvif=shared \
–enable-version=shared –enable-status=shared \
–enable-autoindex=shared –enable-asis=shared \
–enable-info=shared –enable-cgid=shared \
–enable-dav=shared –enable-dav-fs=shared \
–enable-vhost-alias=shared –enable-negotiation=shared \
–enable-dir=shared –enable-imagemap=shared \
–enable-actions=shared –enable-speling=shared \
–enable-userdir=shared –enable-alias=shared \
–enable-rewrite=shared –enable-mime=shared –enable-ssl \
–with-pcre=yes –enable-rewrite –enable-dav –enable-info –enable-suexec \
–enable-cgi –enable-cgid –enable-static-support –enable-static-logresolve –enable-http

el proxima entrega explicaré otras flags …

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 19 enero 2008 en Cultura Libre, Linux, PlanetaLinux. Añade a favoritos el enlace permanente. Deja un comentario.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: