# [risolto] mplayer non compila

## Dece

quando cerco di ricompilare mplayer, ottengo sempre un errore di compilazione:

 *Quote:*   

> cabac.h: In function 'get_cabac_noinline':
> 
> cabac.h:522: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
> 
> In file included from kmvc.c:32:
> ...

 

ho guardato più volte su bugzilla, sia nelle faq di mplayer e dicevano che era un bug di gcc... speravo che attendendo con pazienza, i devel avrebbero risolto il problema, ma dato che è da settembre che ricevo questi errori, e dato che le ho provate veramente tutte (provato più versioni di gcc, cambiato use, usato cflag safe...) volevo chiedere se qualcuno tra voi nel forum ha avuto lo stesso problema e se è riuscito a risolverlo  :Confused: 

ps. estratto di emerge --info:

 *Quote:*   

> Portage 2.1.2.7 (default-linux/x86/2007.0/desktop, gcc-4.1.2, glibc-2.5-r2, 2.6.21-gentoo i686)
> 
> =================================================================
> 
> System uname: 2.6.21-gentoo i686 Intel(R) Pentium(R) M processor 1.73GHz
> ...

 

----------

## drizztbsd

 *Dece wrote:*   

> ps. estratto di emerge --info:
> 
>  *Quote:*   Portage 2.1.2.7 (default-linux/x86/2007.0/desktop, gcc-4.1.2, glibc-2.5-r2, 2.6.21-gentoo i686)
> 
> =================================================================
> ...

 

Apri un bug su bugzilla e vedrai in quanti nanosecondi jakub ti da del ricer   :Twisted Evil: 

prova a usare C(XX)FLAGS umane (e dicci con che use stai compilando)

----------

## Dece

 *Drizzt Do` Urden wrote:*   

>  *Dece wrote:*   
> 
> CFLAGS="-march=pentium-m -O2 -pipe -fomit-frame-pointer -funroll-loops -mfpmath=sse"
> 
> CHOST="i686-pc-linux-gnu"
> ...

 

Ma infatti me l'aspettavo  :Razz:  le ultime due flag le avevo aggiunte un tot di tempo fa e onestamente non mi ricordo neanche dove le ho pescate... la prima cosa che ho pensato infatti è stato provare ad eliminarle, ma purtroppo il risultato non è cambiato (avevo provato anche con -march=i686 ma niente)

attualmente le use di mplayer sono le seguenti:

```

[ebuild     U ] media-video/mplayer-1.0.20070427 [1.0_pre20060810] USE="X a52%* aac alsa arts cddb%* debug dga dts dvd dvdnav%* dvdread encode esd fbcon gif gtk ipv6 jpeg mad mmx mp3%* musepack opengl png quicktime%* rar%* real samba sdl srt%* sse sse2 theora truetype unicode vorbis win32codecs xv xvid -3dnow -3dnowext -aalib (-altivec) -amr -bidi -bindist -bl -cdparanoia -cpudetection -custom-cflags -directfb -doc -dv -dvb -enca -ftp% -ggi -iconv -ivtv% -jack -joystick -libcaca -lirc -live -livecd -lzo -md5sum% -mmxext -mp2% -nas -openal -oss -pnm% -radio% -rtc -speex -svga -tga -tivo% -v4l -v4l2 -vidix% -x264 -xanim -xinerama -xvmc -zoran% (-3dfx%) (-matrox%) (-xmms%)" VIDEO_CARDS="-mga% -s3virge% -tdfx% -vesa%"
```

quelle di sistema:

```
USE="X a52 aac acl acpi afs alsa arts bash-completion berkdb bitmap-fonts bluetooth branding cairo cdr cli cracklib crypt cups dbus dri dvd dvdr dvdread eds emboss encode esd evo fam ffmpeg firefox fortran gdbm gif gpm gstreamer gtk hal iconv ipv6 isdnlog java jpeg kde kdeenablefinal kdexdeltas kerberos lame ldap libg++ logitech mad midi mikmod mmx mp3 mpeg mplayer mudflap ncurses nls nptl nptlonly nsplugin nvidia obex ogg opengl openmp oss pam pcre pdf perl pertty png pppd python qt3 qt3support qt4 quicktime readline real reflection samba sdl session spell spl sse sse2 ssl svg tcpd threads tiff truetype truetype-fonts type1-fonts unicode vorbis win32codecs x86 xinerama xml xorg xv zeroconf zlib"

```

----------

## djinnZ

prova a ricompilare -O2 -pipe (al più -fomit-frame-pt -fno-strict-alias) glibc glib e gtk oltre al gcc e lanciare un revdep-rebuild. Poi dovrebbe andare (almeno a me ha funzionato, non so perchè ma gcc non gradisce che glibc sia compilata con ottimizzazioni diffrenti).

----------

## Dece

 *djinnZ wrote:*   

> prova a ricompilare -O2 -pipe (al più -fomit-frame-pt -fno-strict-alias) glibc glib e gtk oltre al gcc e lanciare un revdep-rebuild. Poi dovrebbe andare (almeno a me ha funzionato, non so perchè ma gcc non gradisce che glibc sia compilata con ottimizzazioni diffrenti).

 

Niente da fare, stesso errore  :Confused:   *Quote:*   

> i686-pc-linux-gnu-gcc -I../libswscale  -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I.. -I.. -I../libavutil -Wdeclaration-after-statement -I. -I.. -I../libavutil -W -Wall -Wno-unused-parameter -O2 -march=pentium-m -mtune=pentium-m -g3  -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I/usr/X11R6/include -I/usr/include/SDL  -D_REENTRANT -I/usr/kde/3.5/include/artsc -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -I/usr/include -I/usr/include/dvdnav -I/usr/include/freetype2 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12    -c -o idcinvideo.o idcinvideo.c
> 
> In file included from idcinvideo.c:54:
> 
> avcodec.h:2480: warning: 'ImgReSampleContext' is deprecated
> ...

 

la cosa frustrante è che avviene sempre praticamente a fine compilazione  :Confused: 

----------

## Dece

Risolto!!!

cercando in giro per la rete, ho trovato questo:

 *Quote:*   

> Try adding -fomit-frame-pointer; it seems to be necessary on 32-bit x86 
> 
> after some recent libavcodec modifications.

 

poi ho notato che quella flag, benchè fosse presente tra le mie CFLAGS, non compariva mai nell'output di compilazione e per di più le flag settate non erano quelle del mio make.conf:

 *Quote:*   

> i686-pc-linux-gnu-gcc -I../libswscale -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I.. -I.. -I../libavutil -Wdeclaration-after-statement -I. -I.. -I../libavutil -W -Wall -Wno-unused-parameter -O2 -march=pentium-m -mtune=pentium-m -g3 -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I/usr/X11R6/include -I/usr/include/SDL -D_REENTRANT -I/usr/kde/3.5/include/artsc -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include -I/usr/include/dvdnav -I/usr/include/freetype2 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -c -o idcinvideo.o idcinvideo.c 

 

spulciando il configure, mi sono accorto che settava le sue CFLAGS ignorando beceramente il make.conf  :Confused: 

Aggiungendo -O1 e -fomit-frame-pointer tra le flag del configure, tutto si è compilato  :Wink: 

ps. si vede che oggi non avevo proprio nulla da fare, eh?  :Rolling Eyes: 

----------

## djinnZ

USE="custom-cflags" o meglio

```

echo "media-video/mplayer custom-cflags" >> /etc/portage/package.use

```

 che grub non gradisce alle volte.

Come ottimizzazione -O2 dovrebbe andare ma come ti ho detto "-O2 -march=pentium-m fomit-frame-pointer -fno-strict-aliasing - pipe" (se non mi sbaglio doverbbe essere il default per gentoo); -mtune non serve se hai -march. Per gcc e glibc è inutile altro per il resto ti ripeto che -O3 è plausibile ma senza -Wl,-O1 non è che abbia molto senso.

----------

## Dece

 *djinnZ wrote:*   

> -mtune non serve se hai -march. Per gcc e glibc è inutile altro per il resto ti ripeto che -O3 è plausibile ma senza -Wl,-O1 non è che abbia molto senso.

 

Infatti mtune lo metteva il configure di mplayer, indipendentemente dalla flag custom-cflags settata o meno: io non l'avevo nel make.conf... boh  :Confused: 

Ho messo O1 giusto per provare a compilare con meno ottimizzazioni possibili: stasera magari riprovo lasciando O2 (che è il default nel configure) e aggiungendo solo -fomit-frame-pointer

Ciao!

----------

## g3nt00_m4n

 *Dece wrote:*   

>  *djinnZ wrote:*   -mtune non serve se hai -march. Per gcc e glibc è inutile altro per il resto ti ripeto che -O3 è plausibile ma senza -Wl,-O1 non è che abbia molto senso. 
> 
> Infatti mtune lo metteva il configure di mplayer, indipendentemente dalla flag custom-cflags settata o meno: io non l'avevo nel make.conf... boh 
> 
> Ciao!

 

Anche io avevo lo stesso problema e mi sono accorto che anche con la use custom-cflags settata se ne fregava delle mie impostazioni ed usava: 

 -W -Wall -O2 -march=i486 -mtune=i686 -pipe -g3 :S

EDIT: Adesso pero' all'avvio mi dice: 

Compiler did not align stack variables. Libavcodec has been miscompiled

and may be very slow or crash. This is not a bug in libavcodec,

but in the compiler. Do not report crashes to FFmpeg developers.

ecco i miei flag. 

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=k8 -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"

cosa puo' essere???

----------

