[mythtv-users] compile barfs at mpegvideo.c: - more info

Marius Schrecker marius at schrecker.org
Fri Sep 23 08:27:34 UTC 2005


> Hi, compiling mythtv-0.18.1 on amd64 debian sid with gcc 3.4 (where much
> of system compiled on 4.0). Following
> www.mythtv.org/docs/mythtv-HOWTO-4.html
> at : # dpkg-buildpackage -rfakeroot -us -uc -b
> [...]
> I'm getting:
>
> mpegvideo.c: In function `ff_copy_bits':
> mpegvideo.c:26: error: extended registers have no high halves
> {standard input}: Assembler messages:
> {standard input}:15149: Error: bad register name `%'
> make[3]: *** [mpegvideo.o] Error 1
> make[3]: Leaving directory
> `/home/mythtv/tmp/mythtv-0.18.1/libs/libavcodec'
> make[2]: *** [sub-libavcodec] Error 2
> make[2]: Leaving directory `/home/mythtv/tmp/mythtv-0.18.1/libs'
>
> anyone seen this and can suggest a workaround?
>
> Thanks
>
> Marius
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users
>

A little more info on this one:

Here is the code from the ff_copy_bits function from mpegvideo.c :
void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length)
{
    const uint16_t *srcw= (uint16_t*)src;
    int words= length>>4;
    int bits= length&15;
    int i;

    if(length==0) return;

    if(words < 16){
        for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i]));
    }else if(put_bits_count(pb)&7){
        for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i]));
    }else{
        for(i=0; put_bits_count(pb)&31; i++)
            put_bits(pb, 8, src[i]);
        flush_put_bits(pb);
        memcpy(pbBufPtr(pb), src+i, 2*words-i);
        skip_put_bytes(pb, 2*words-i);
    }

    put_bits(pb, bits, be2me_16(srcw[words])>>(16-bits));

>From the compile output just before the error it looks as if the code is
compiling for generic i386?:

gcc-3.4 -c -pipe -w -O3 -Wall -Wno-switch -fomit-frame-pointer
-D_REENTRANT -DPIC -fPIC  -DMMX -Di386 -DUSING_IVTV -DUSING_DVB
-DUSING_XRANDR -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\"
-DHAVE_AV_CONFIG_H -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_THREAD_SUPPORT
-DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I..
-I../.. -I/usr/include/qt3 -o allcodecs.o allcodecs.c
gcc-3.4 -c -pipe -w -O3 -Wall -Wno-switch -fomit-frame-pointer
-D_REENTRANT -DPIC -fPIC  -DMMX -Di386 -DUSING_IVTV -DUSING_DVB
-DUSING_XRANDR -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\"
-DHAVE_AV_CONFIG_H -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_THREAD_SUPPORT
-DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I..
-I../.. -I/usr/include/qt3 -o mpegvideo.o mpegvideo.c
mpegvideo.c: In function `ff_copy_bits':
mpegvideo.c:26: error: extended registers have no high halves
{standard input}: Assembler messages:
{standard input}:15149: Error: bad register name `%'
make[3]: *** [mpegvideo.o] Error 1
make[3]: Leaving directory `/home/mythtv/tmp/mythtv-0.18.1/libs/libavcodec'
make[2]: *** [sub-libavcodec] Error 2
make[2]: Leaving directory `/home/mythtv/tmp/mythtv-0.18.1/libs'
make[1]: *** [sub-libs] Error 2
make[1]: Leaving directory `/home/mythtv/tmp/mythtv-0.18.1'
make: *** [build-arch-stamp] Error 2

 Don't know if this could be part of the problem? "[build-arch-stamp]
would appear to corrobereate this.


If I do a #./configure --arch=k8  - #qmake mythtv.pro - #make, I also get
an error from libavcodec/:

make[2]: Entering directory `/home/mythtv/tmp/mythtv-0.18.1/libs/libavcodec'
gcc -c -pipe -march=k8 -w -O3 -Wall -Wno-switch -fomit-frame-pointer
-D_REENTRANT -DPIC -fPIC  -DUSING_IVTV -DUSING_XRANDR -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr/local\" -DHAVE_AV_CONFIG_H
-D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED
-DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I.. -I../..
-I/usr/include/qt3 -o utils.o utils.c
In file included from avcodec.h:14,
                 from utils.c:27:
common.h:63: error: array type has incomplete element type
common.h:65: error: array type has incomplete element type
make[2]: *** [utils.o] Error 1
make[2]: Leaving directory `/home/mythtv/tmp/mythtv-0.18.1/libs/libavcodec'
make[1]: *** [sub-libavcodec] Error 2
make[1]: Leaving directory `/home/mythtv/tmp/mythtv-0.18.1/libs'
make: *** [sub-libs] Error 2

I think I remember other apps (Mplayer for example) getting libavcodec
from ffmpeg.... should I be looking at recompiling this or re-installing
other dependencies?

Sorry to be so lost here.

Marius


More information about the mythtv-users mailing list