[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Versión del compilador y librerías para crear paquetes Debian



El día 17 de noviembre de 2009 20:00, Mario Palomo
<mpalomo@users.sourceforge.net> escribió:

> Mi pregunta era más sobre la política que se sigue en Debian con respecto a
> la versión del compilador y librerías básicas que deben usar los DD
> (incluyendo los distintos flags a usar para el compilador: ¿-O2 o -O3?,
> ¿-march y otros posibles tuneos? y sobre todo los flags a usar para el caso
> de plataformas distintas a la i386 y amd64, como mips y arm, que es donde
> suelo trabajar), pero de tu respuesta entiendo que esas decisiones son cosa
> de cada DD para cada paquete con el que trabaja. ¿Podría confirmarme esto
> algún DD en la lista?

No uses -O3, no siempre optimiza más y puede dar problemas con ciertas
arquitecturas*. En general, lo conveniente es usar los CFLAGS que se
le envían al rules, que habitualmente implican una optimización -O2

Por otra parte, es muy cómodo usar también -Wall para que, al menos,
avise de los warnings.

Respecto al linker, a mí personalmente me gusta usar como opciones de
enlace (LDCONFIG) [0]

--no-undefined / -z defs: Para rechazar las referencias que no sean
satisfechas por ninguna de las librerías con las que se enlaza, tanto
directa como indirectamente, y para resolver todos los símbolos al
enlazar. [1]

--as-needed: Para eliminar las relaciones de enlace que no estén
emparejadas con una relación de uso de las mismas. [1]

--no-add-needed: Para asegurarnos de que estamos enlazando
eplícitamente todas las librerías que usamos de forma directa desde el
código de nuestro programa. [2]

-Wl,option pasa algunos parámetros al enlazador. Si option tiene
comas, lo separa en opciones múltiples: -Wl,-z,defs -Wl,-as-needed
-Wl,--no-undefined -Wl,--no-add-needed

Saludos,
Miry

*: "-O3 is supposed to increase performance, but bigger code might not
fit in the cpu cache, which in turns, virtually means a performance
drop that is much bigger than any optimization that -O3 might
provide." [3] "-O2: A step up from -O1. This is the recommended level
of optimization unless you have special needs." "Using -O3 is not
recommended for gcc 4.x" [4]


[0] http://sourceware.org/binutils/docs-2.16/ld/Options.html
[1] http://blog.flameeyes.eu/2008/11/19/relationship-between-as-needed-and-no-undefined-part-1-what-do-they-do
[2] http://wiki.debian.org/qa.debian.org/FTBFS#A2009-11-02Packagesfailingbecausebinutils-gold.2BAC8-indirectlinking
[3] http://www.linuxforums.org/forum/linux-programming-scripting/118311-gcc-optimisation-o-o1-o2-o3.html
[4] http://www.gentoo.org/doc/en/gcc-optimization.xml


Reply to: