can't find a register in class `GENERAL_REGS' while reloading `asm'

如果出现以下错误
cabac.h: In function `get_cabac_noinline':
cabac.h:525: error: can't find a register in class `GENERAL_REGS' while reloading `asm'
make[1]: *** [h264.o] 错误 1
在make前加入
export CFLAGS=-fomit-frame-pointer
make clean

 

之前因為想找出 ass 字幕爛掉的原因,得編譯一個 debug 版本的 mplayer。但只要一加入這個選項後編譯就會爛掉,會跑出如下的錯誤訊息: 

can’t find a register in class ‘GENERAL_REGS’ while reloading ‘asm’ 

當時也沒仔細去找解法,直接用插入 printf 的方法來觀察一些變數,問題也順利解決了。不過昨天把 svn head 抓下來編譯後也是一樣,看來應該是老問題了,查了一下 maillist 發現有人問過,可以參考這幾封信: 
http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-November/047222.html 
http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-November/047221.html 

解決方法是在 libavcodec/Makefile 的 CFLAGS 加入 -fomit-frame-pointer 參數就好。編譯完果然變得超級肥大…看起來是可以用 gdb 來跑了: 

88M mplayer
6.9M mplayer-strip 

這問題好像留了好幾年還找不到解決方法,不過在 FAQ 中是把問題推給 gcc,所以在 gcc 的 ml 上也發現有人問過類似的 問 題….

posted @ 2012-01-07 20:06  googlegis  阅读(499)  评论(0编辑  收藏  举报

坐标合肥,非典型GIS开发人员 GitHub