I've been trying to compile MythTV 0.18.1 on SuSE 9.2, however I keep getting the following errors. Anyone know what to do? make[2]: Entering directory `/home/mythtv/download/mythtv.18.1/mythtv-0.18.1/libs/libmyth' g++ -c -pipe -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -march=pentium4 -I/opt/kde3/include -pthread -I/opt/gnome/include/glib-2.0 -I/opt/gnome/lib/glib-2.0/include -Wall -W -O3 -Wall -Wno-switch -fomit-frame-pointer -D_REENTRANT -DPIC -fPIC -DMMX -Di386 -DUSING_IVTV -DUSING_XRANDR -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr/local\" -DUSING_OSS -DUSE_ALSA -DUSE_JOYSTICK_MENU -DUSE_LIRC -DUSE_ARTS -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/usr/lib/qt3/mkspecs/default -I. -I/usr/local/include -I../libmythsamplerate -I../libmythsoundtouch -I../.. -I/usr/include -I/usr/lib/qt3/include -o mythcdrom-linux.o mythcdrom-linux.cpp In file included from /usr/include/asm/byteorder.h:59, from /usr/include/linux/cdrom.h:14, from mythcdrom-linux.cpp:3: /usr/include/linux/byteorder/little_endian.h:43: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:47: error: syntax error before `*' token /usr/include/linux/byteorder/little_endian.h: In function `__u64 __le64_to_cpup(...)': /usr/include/linux/byteorder/little_endian.h:49: error: `p' undeclared (first use this function) /usr/include/linux/byteorder/little_endian.h:49: error: (Each undeclared identifier is reported only once for each function it appears in.) /usr/include/linux/byteorder/little_endian.h: At global scope: /usr/include/linux/byteorder/little_endian.h:51: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:55: error: syntax error before `*' token /usr/include/linux/byteorder/little_endian.h:59: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:63: error: syntax error before `*' token /usr/include/linux/byteorder/little_endian.h:67: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:71: error: syntax error before `*' token /usr/include/linux/byteorder/little_endian.h:75: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:79: error: syntax error before `*' token /usr/include/linux/byteorder/little_endian.h:83: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:87: error: syntax error before `*' token make[2]: *** [mythcdrom-linux.o] Error 1 make[2]: Leaving directory `/home/mythtv/download/mythtv.18.1/mythtv-0.18.1/libs/libmyth' make[1]: *** [sub-libmyth] Error 2 make[1]: Leaving directory `/home/mythtv/download/mythtv.18.1/mythtv-0.18.1/libs' make: *** [sub-libs] Error 2
Khanh Tran wrote:
I've been trying to compile MythTV 0.18.1 on SuSE 9.2, Are you sure that is 9.2 and not 9.3? however I keep getting the following errors. Anyone know what to do?
mythcdrom-linux.cpp In file included from /usr/include/asm/byteorder.h:59, from /usr/include/linux/cdrom.h:14, from mythcdrom-linux.cpp:3: /usr/include/linux/byteorder/little_endian.h:43: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:47: error: syntax error before `*' token /usr/include/linux/byteorder/little_endian.h: In function `__u64 __le64_to_cpup(...)': /usr/include/linux/byteorder/little_endian.h:49: error: `p' undeclared (first use this function)
This looks a lot like the bug I was working to figure out to get kscd to get compiled in 9.3 with cdda support. The kscd author told me it was a glibc bug. Assuming it is 9.3, the problem is [Disclaimer: I am not a programmer, and my code reading and terminology is therefore highly suspect] there is a reference to cdrom.h in mythcdrom-linux.cpp, which references byteorder, which references little_endian.h, which is defined in types.h as #if defined(__GNUC__) && !defined(__STRICT_ANSI__) *typedef* __u64 __bitwise __le64; *typedef* __u64 __bitwise __be64; #endif If cdrom.h is defined with __STRICT_ANSI__, it breaks the definition and causes the little_endian error. I unfortunately don't know which has a bug, what it is or should be. You could search the archives and take a look at the patch I used to get this to work with kscd. Maybe it will give you an idea of a fix? /workaround? -- Joe Morris New Tribes Mission Email Address: Joe_Morris@ntm.org Registered Linux user 231871
On Tue, Jun 14, Joe Morris (NTM) wrote:
Khanh Tran wrote:
I've been trying to compile MythTV 0.18.1 on SuSE 9.2, Are you sure that is 9.2 and not 9.3? however I keep getting the following errors. Anyone know what to do?
mythcdrom-linux.cpp In file included from /usr/include/asm/byteorder.h:59, from /usr/include/linux/cdrom.h:14, from mythcdrom-linux.cpp:3: /usr/include/linux/byteorder/little_endian.h:43: error: syntax error before `(' token /usr/include/linux/byteorder/little_endian.h:47: error: syntax error before `*' token /usr/include/linux/byteorder/little_endian.h: In function `__u64 __le64_to_cpup(...)': /usr/include/linux/byteorder/little_endian.h:49: error: `p' undeclared (first use this function)
This looks a lot like the bug I was working to figure out to get kscd to get compiled in 9.3 with cdda support. The kscd author told me it was a glibc bug.
The kscd author is wrong. If somebody is including kernel header files, it is his own fault. He is, following the policy of kernel developers, not allowed to do so. And if he is doing it, it is his own responsibility to include it in a correct form. Since glibc is not involved at all here, it cannot be a glibc bug. Thorsten -- Thorsten Kukuk http://www.suse.de/~kukuk/ kukuk@suse.de SUSE LINUX Products GmbH Maxfeldstr. 5 D-90409 Nuernberg -------------------------------------------------------------------- Key fingerprint = A368 676B 5E1B 3E46 CFCE 2D97 F8FD 4E23 56C6 FB4B
Thorsten Kukuk wrote:
The kscd author is wrong. If somebody is including kernel header files, it is his own fault. He is, following the policy of kernel developers, not allowed to do so. And if he is doing it, it is his own responsibility to include it in a correct form. Since glibc is not involved at all here, it cannot be a glibc bug. Thanks for that feedback, but it does confuse me some, and I am hoping you could 'unconfuse' me. How is glibc not involved? I mean, and I am just trying to understand, joe@jmorris:~> rpm -qf /usr/include/linux/cdrom.h glibc-devel-2.3.4-23 joe@jmorris:~> rpm -qf /usr/include/linux/types.h glibc-devel-2.3.4-23 joe@jmorris:~> rpm -qf /usr/include/linux/byteorder/little_endian.h glibc-devel-2.3.4-23 joe@jmorris:~> rpm -qf /usr/include/asm/byteorder.h glibc-devel-2.3.4-23 All the files seemingly involved are from glibc-devel. How is glibc not involved here at all. BTW, the kscd author said and I quote, " ------- Additional Comments From thiago kde org 2005-06-07 07:21 ------- The bug is in glibc and the kernel headers. Please ask SuSE to fix them there." So he also mentioned the kernel headers, but since the files involved are from glibc-devel, I didn't understand that either. Thanks for any help. For the record, I did patch the kscd source and got it to work by basically doing what you said, by including it in the correct form, as did the OP in this thread.
-- Joe Morris New Tribes Mission Email Address: Joe_Morris@ntm.org Registered Linux user 231871
participants (3)
-
Joe Morris (NTM)
-
Khanh Tran
-
Thorsten Kukuk