# Cоветы: флаги компиляции CFLAGS и CXXFLAGS?

## Rasputin

База флагов оптимизации CHOST, CFLAGS, CXXFLAGS.

Предлагаю на этом посте всем оставлять свои заметки и разьяснения своих настроек в целях ознакомления и дальнейшего использования флагов оптимизации.

С Вашего позволения я начну:

CPU Duron 1100 Mhz 512 

CHOST="i686-pc-linux-gnu" 

CFLAGS="-Os -march=athlon -mcpu=athlon -fomit-frame-pointer -funroll-loops -ffast-math -fprefetch-loop-arrays -msse -m3dnow -mfpmath=sse,387 -pipe" 

CXXFLAGS=${CFLAGS}

 :Very Happy:  Если Вам не жалко прошу делитесь...

----------

## except

http://www.freehackers.org/gentoo/gccflags/flag_gcc3.html - безопасная оптимизация

http://www.freehackers.org/gentoo/gccflags/flag_gcc3opt.html - сильная отптимизация

я использовал флаги из второй ссылки и тьфу тьфу все работает на ура.

----------

## Rasputin

Вот еще одна интирестная ссылочка для тех у кого CPU Duron.

https://forums.gentoo.org/viewtopic.php?t=124346&highlight=cflags+duron

----------

## Bash[DevNull]

 *Rasputin wrote:*   

> База флагов оптимизации CHOST, CFLAGS, CXXFLAGS.
> 
> Предлагаю на этом посте всем оставлять свои заметки и разьяснения своих настроек в целях ознакомления и дальнейшего использования флагов оптимизации.
> 
> С Вашего позволения я начну:
> ...

 

Ну а смысл? Ты лучше расскажи, что каждый флаг в теории делает, как это сказываеться на софте, какие приросты произовдительности. С цифрами желательно. А если ты прописал какую-то умную строчку в make.conf, не понял, что она значит, ничего не изменилось, то смысл это нести миру?

----------

## Zoltan

 *Rasputin wrote:*   

> CFLAGS="-Os -march=athlon -mcpu=athlon -fomit-frame-pointer -funroll-loops -ffast-math -fprefetch-loop-arrays -msse -m3dnow -mfpmath=sse,387 -pipe" 
> 
> CXXFLAGS=${CFLAGS}
> 
> 

 

Rasputin, у дюрона нету SSE (его нету и у атлонов до athlon-xp), убери -msse и -mfpmath=sse,387 а то рано или поздно получишь SIGILL - Illegal Instruction, который происходит когда процессор не может исполнить инструкцию, потому что ее у него нет.

----------

## Rasputin

2 Zoltan:

```
# cat /proc/cpuinfo 

processor       : 0 

vendor_id       : AuthenticAMD 

cpu family      : 6 

model           : 7 

model name      : AMD Duron(tm) Processor 

stepping        : 1 

cpu MHz         : 1113.741 

cache size      : 64 KB 

fdiv_bug        : no 

hlt_bug         : no 

f00f_bug        : no 

coma_bug        : no 

fpu             : yes 

fpu_exception   : yes 

cpuid level     : 1 

wp              : yes 

flags           : fpu vme de tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow 

bogomips        : 2292.28 
```

Тогда это что?    :Confused: 

----------

## Bash[DevNull]

Имхо это просто заглушки на процессоре, чтобы не было совсем часто сигментайшн файлров  :Wink: 

----------

## Rasputin

Тогда получается у меня sse не поддерживается? АбиднА   :Sad: 

А mmx и 3dnow?

----------

## Zoltan

Хмм, интересно. Может и правда есть SSE, я про дюроны плохо знаю. Если /proc/cpuinfo показывает что есть, значит скорее всего есть  :Smile: 

Только как проверить я точно не скажу, я знаю только один пакет, который точно использует SEE, это mplayer. Но для него как правило нужны иксы.

----------

## Bash[DevNull]

 *Rasputin wrote:*   

> Тогда получается у меня sse не поддерживается? АбиднА  
> 
> А mmx и 3dnow?

 

Ну 3DNow должно поддерживаться, это же AMD'шная фишка.

----------

## Bash[DevNull]

 *Zoltan wrote:*   

> Хмм, интересно. Может и правда есть SSE, я про дюроны плохо знаю. Если /proc/cpuinfo показывает что есть, значит скорее всего есть 
> 
> Только как проверить я точно не скажу, я знаю только один пакет, который точно использует SEE, это mplayer. Но для него как правило нужны иксы.

 

Ну я не уверен, что можно верить cpuinfo. Вот на мой PIV там показываеться, что есть ГиперТрединг, а у меня его нету :-/

Для mplayer'а совсем не обязательны иксы.

А если интересен список приложений, которые используют SSE, то вот он

dev-libs/fftw/fftw

dev-libs/DirectFB/DirectFB

games-emulation/mupen64/mupen64

media-gfx/gimp/gimp-1.3

media-gfx/gimp/gimp-2.0

media-libs/libfame/libfame

media-libs/flac/flac

media-libs/speex/speex

media-libs/mesa-glu/mesa-glu

media-libs/libvorbis/libvorbis

media-libs/allegro/allegro

media-libs/mesa/mesa

media-sound/fluidsynth/fluidsynth

media-video/transcode/transcode

media-video/fame/fame

media-video/recmpeg/recmpeg

media-video/mplayer/mplayer

media-video/avifile/avifile

x11-base/kdrive/kdrive

x11-base/xfree/xfree

x11-libs/evas/evas

x11-misc/rss-glx/rss-glx

----------

## Zoltan

 *Bash[DevNull] wrote:*   

> Ну я не уверен, что можно верить cpuinfo. Вот на мой PIV там показываеться, что есть ГиперТрединг, а у меня его нету :-/
> 
> Для mplayer'а совсем не обязательны иксы.

 

Ну это я знаю, только на framebuffer он далеко не у всех работает  :Smile: 

 *Bash[DevNull] wrote:*   

> А если интересен список приложений, которые используют SSE, то вот он

 

Не надо путать SSE с SSE2. SSE это SIMD плавающая арифметика с одинарной точностью. Она нужна довольно небольшому количеству программ, используется редко.

А вот SSE2, который есть только в Pentium 4 и Athlon 64, это SIMD плавающая арифметика с двойной точностью. Ее использует значительно больше программ.

Но в генту флаг sse только один. Так что непонятно какой конкретно SSE использует программа. Для теста нужна программа, которой нужен именно простой SSE, SSE2 на дюроне точно нет, тестировать нечего. А вот где найти программу, которая способна использовать именно первый SSE? Это я и имел ввиду, вроде, mplayer может его использовать. Про libvorbis знаю только что она использует SSE2, про остальные пакеты не знаю.

----------

## Bash[DevNull]

Хм, но не обязательно же FB, я вот по VESA гоняю его в консоле :) 

А про SSE ты прав, я думал в гентушных флагах есть SSE2 :) Так что вышепредложеный список не есть корректный ;)

----------

