PDA

View Full Version : Show EQ 5 compile error



ieatacid
12-08-2003, 06:13 AM
When doing "make" I keep getting the following error.

g++-3.0.4 -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/lib/qt-3.2.3/include -I/usr/X11R6/include -DPKGDATADIR=\"/usr/local/share/showeq/\" -I/usr/include/pcap -D_REENTRANT -O2 -Wall -g -ggdb -DDEBUG -finline-functions -DQT_THREAD_SUPPORT=1 -DDISPLAY_ICONS=false -DICON_DIR=\"/eq-icons/\" -c map.cpp
map.cpp:20:30: ui_mapicondialog.h: No such file or directory
map.cpp: In member function `void Map::showMapIconDialog()':
map.cpp:2699: invalid use of undefined type `class MapIconDialog'
map.h:71: forward declaration of `class MapIconDialog'
map.cpp:2702: invalid use of undefined type `class MapIconDialog'
map.h:71: forward declaration of `class MapIconDialog'
map.cpp:2706: invalid use of undefined type `class MapIconDialog'
map.h:71: forward declaration of `class MapIconDialog'
make[2]: *** [map.o] Error 1
make[2]: Leaving directory `/showeq/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/showeq'
make: *** [all-recursive-am] Error 2
[root@localhost showeq]#

QT is 3.2.3 as required. Anyoone have any ideas on what it is?

Any help is appreciated. Really want to try this out : )

Alfred
12-08-2003, 07:33 AM
ditto

I'm going to try the tarball instead of the cvs set.

Zaphod
12-08-2003, 07:51 AM
Originally posted by ieatacid
When doing "make" I keep getting the following error.

g++-3.0.4 -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/lib/qt-3.2.3/include -I/usr/X11R6/include -DPKGDATADIR=\"/usr/local/share/showeq/\" -I/usr/include/pcap -D_REENTRANT -O2 -Wall -g -ggdb -DDEBUG -finline-functions -DQT_THREAD_SUPPORT=1 -DDISPLAY_ICONS=false -DICON_DIR=\"/eq-icons/\" -c map.cpp
map.cpp:20:30: ui_mapicondialog.h: No such file or directory
map.cpp: In member function `void Map::showMapIconDialog()':
map.cpp:2699: invalid use of undefined type `class MapIconDialog'
map.h:71: forward declaration of `class MapIconDialog'
map.cpp:2702: invalid use of undefined type `class MapIconDialog'
map.h:71: forward declaration of `class MapIconDialog'
map.cpp:2706: invalid use of undefined type `class MapIconDialog'
map.h:71: forward declaration of `class MapIconDialog'
make[2]: *** [map.o] Error 1
make[2]: Leaving directory `/showeq/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/showeq'
make: *** [all-recursive-am] Error 2
[root@localhost showeq]#

QT is 3.2.3 as required. Anyoone have any ideas on what it is?

Any help is appreciated. Really want to try this out : )

First, the usual questions that we almost always ask. What Linux distribution (including version) and compiler are you using? Also, what versions of autoconf, automake, and make? This type of information helps us to narrow down the exact nature, cause, and solution to a problem.

This problem has typically been caused by an incompatibility with autoconf 2.13. We haven't figured out exactly why autoconf 2.13 is having this issue. Apparently it creates ui_mapicondialog.h as it is supposed to, but then promptly deletes it. So, in the interim, please try to use autoconf versions 2.5 or higher as these are known to work.

If you are using a Linux distribution that has multiple versions of autoconf on it and has a script determining which version to run, try the following:[list=1]
Setting the environment variable WANT_AUTOCONF_2_5 to 1, well on Gentoo at least. In Bourne shell variants this can be accomplished by:
$ export WANT_AUTOCONF_2_5=1

In csh variants (including tcsh) this can be accomplished by:

setenv WANT_AUTOCONF_2_5 1


Add AC_PREREQ(2.5) to configure.in just before the call to AC_INIT(src/main.cpp). This should result in the top of configure.in looking like:

dnl Process this file with autoconf to produce a configure script.
dnl $Id: configure.in,v 1.49.4.1 2003/12/07 06:30:41 dohpaz Exp $ $Name: $
AC_PREREQ(2.5)
AC_INIT(src/main.cpp)
AM_CONFIG_HEADER(conf.h)
AM_INIT_AUTOMAKE(showeq, 5.0.0.1)
AM_MAINTAINER_MODE

[/list=1]

I hope that helps you. Fortunately or unfortunately both of my Linux boxes (RedHat 8 and 9) come with autoconf versions 2.53 and 2.57.

Enjoy,
Zaphod (dohpaZ)

Alfred
12-08-2003, 08:13 AM
Thanks!

Using gentoo here and sure enough, I have autoconf-2.1.3 and autoconf-2.57. I notice there are different versions of autoheader, automake, autoreconf and autoupdate.

Trying your suggestions now.

ieatacid
12-08-2003, 08:29 AM
Mandrake 8.1, automake 1.4, make 3.79.1, and sure enough, autoconf 2.13

I should've posted that in my first thread. Thanks for the prompt reply. Will try updating and have another go at it.

Alfred
12-08-2003, 09:19 AM
That was the problem. Thanks again.

Now it looks like I need to learn the idiosyncrasies of QT dockable windows.

ieatacid
12-08-2003, 10:29 AM
Ok, I downloaded autoconf 2.55 and installed it as per its included instructions. If I type "autoconf" and hit tab it shows that I have both 2.13 and 2.55, but I still get the same error when trying to "make" showeq.

This is just a guess, but maybe it's not using the right autoconf?

Alfred
12-08-2003, 10:32 AM
Originally posted by ieatacid
Ok, I downloaded autoconf 2.55 and installed it as per its included instructions. If I type "autoconf" and hit tab it shows that I have both 2.13 and 2.55, but I still get the same error when trying to "make" showeq.

This is just a guess, but maybe it's not using the right autoconf?

Did you bother to read ALL of zaphod's post? He explains how to TELL the OS to use the right one.

ieatacid
12-08-2003, 11:00 AM
Of course I did : P

This part:


Setting the environment variable WANT_AUTOCONF_2_5 to 1, well on Gentoo at least. In Bourne shell variants this can be accomplished by:
code:
--------------------------------------------------------------------------------
$ export WANT_AUTOCONF_2_5=1
--------------------------------------------------------------------------------

In csh variants (including tcsh) this can be accomplished by:
code:
--------------------------------------------------------------------------------
setenv WANT_AUTOCONF_2_5 1
--------------------------------------------------------------------------------



Add AC_PREREQ(2.5) to configure.in just before the call to AC_INIT(src/main.cpp). This should result in the top of configure.in looking like:
code:
--------------------------------------------------------------------------------
dnl Process this file with autoconf to produce a configure script.
dnl $Id: configure.in,v 1.49.4.1 2003/12/07 06:30:41 dohpaz Exp $ $Name: $
AC_PREREQ(2.5)
AC_INIT(src/main.cpp)
AM_CONFIG_HEADER(conf.h)
AM_INIT_AUTOMAKE(showeq, 5.0.0.1)
AM_MAINTAINER_MODE
--------------------------------------------------------------------------------
But typing "$ export WANT_AUTOCONF_2_5=1" or "setenv WANT_AUTOCONF_2_5 1" in the command prompt returns either "bash: $: command not found" or "bash: setenv: command not found"

And as for
Add AC_PREREQ(2.5) to configure.in just before the call to AC_INIT(src/main.cpp).
That's in there.

BlueAdept
12-08-2003, 12:09 PM
Bah...RH 7.2 uses the old autoconf. Ill have to upgrade later.

Zaphod
12-08-2003, 12:24 PM
Originally posted by ieatacid
Of course I did : P

This part:


But typing "$ export WANT_AUTOCONF_2_5=1" or "setenv WANT_AUTOCONF_2_5 1" in the command prompt returns either "bash: $: command not found" or "bash: setenv: command not found"

And as for
That's in there.

You are supposed to use what appears to the right of the dollar sign. The dollar sign is indicative of the command prompt. We typically include the dollar sign in shell code samples to indicate the beginning of a new command line.

Also, you didn't indicate whether or not you tried adding "AC_PREREQ(2.5)" to the configure.in file.

Enjoy,
Zaphod (dohpaZ)

Cryonic
12-08-2003, 12:32 PM
Guess I'll add this to the thread:

For RH users with Autoconf 2.13 do the following in the src/ directory:

/usr/lib/qt3/bin/uic mapicondialog.ui > ui_mapicondialog.h
/usr/lib/qt3/bin/uic -impl ui_mapicondialog.h mapicondialog.ui > ui_mapicondialog.cpp

after you run configure but before you run make.

JUST AN FYI, MAKE SURE YOU KNOW WHERE YOUR QT3 BIN DIRECTORY IS (as the one posted above is where MINE is located).

ieatacid
12-08-2003, 12:42 PM
I appreciate the help.

After I tried "$ export WANT_AUTOCONF_2_5=1" I went ahead and tried "export WANT_AUTOCONF_2_5=1" and that worked. But I still got the same error.

Not sure if this has anything to do with it, but tar file I dowloaded, I extracted to /autoconf-2.55

CD'd to /autoconf-2.55 and ran "./configure" then "make" then "make install" (that's what the install file said to do).

Now, in the /autoconf-2.55 folder the only config files are "config.log", "config.status", "configure", and "congfigure.ac". The very first line in "configure.ac" says "AC_PREREQ([2.54])"

Cryonic
12-08-2003, 12:50 PM
Uhh, all files mentioned that need to be edited are the SEQ files, not the autoconf.

setenv is a CSH equivalent of export, so if you are using bash you export a variable, if you are using csh you setenv a variable. YOU DON'T DO BOTH.

ieatacid
12-08-2003, 01:34 PM
Yay, it works now! Adding that line to the CORRECT configure.in did the trick :)

Thanks for the replies and the help. Loving it so far :)

Great job again!

GratefulUser
12-08-2003, 01:34 PM
FWIW. I was having the exact same error message as acid. I was not as brave to post a message asking for help :p Running Mandrake 9.1. From typing auto and then hitting the <tab> key, I noticed 2 versions of autoconf as Zaphod indicated (autoconf-2.13 and autoconf-2.5x). I tried the first suggestion


code:-------------------------------------------------------------------------------- $ export WANT_AUTOCONF_2_5=1

and


Add AC_PREREQ(2.5) to configure.in just before the call to AC_INIT(src/main.cpp). This should result in the top of configure.in looking like:
code:
--------------------------------------------------------------------------------
dnl Process this file with autoconf to produce a configure script.
dnl $Id: configure.in,v 1.49.4.1 2003/12/07 06:30:41 dohpaz Exp $ $Name: $
AC_PREREQ(2.5)
AC_INIT(src/main.cpp)
AM_CONFIG_HEADER(conf.h)
AM_INIT_AUTOMAKE(showeq, 5.0.0.1)
AM_MAINTAINER_MODE
--------------------------------------------------------------------------------

and still got the same error.

Tried Cryonic's suggestion


For RH users with Autoconf 2.13 do the following in the src/ directory:

/usr/lib/qt3/bin/uic mapicondialog.ui > ui_mapicondialog.h
/usr/lib/qt3/bin/uic -impl ui_mapicondialog.h mapicondialog.ui > ui_mapicondialog.cpp

after you run configure but before you run make.


and was able to get past the error. Just a FYI :)

EQDoze
12-08-2003, 02:31 PM
uic: relocation error: /usr/lib/qt-3.1/lib/libqt-mt.so.3: undefined symbol: _ZNSs4_Rep11_S_terminalE



RedHat9, Qt3.1.1 installed from RPM.

Unfortunately, they trace this bug back to a faulty GCC optimization. If you're getting this error you have two options, neither is encouraging.

1> Download Qt from Trolltech yourself, and build fresh (many hours)
2> Download the source RPM and rebuild it from there using GCC 3.3+.


I chose option 1, since rebuilding both GCC and Qt seemed excessive. And therein lies the problem with pre-packaged distributions! You have to wait, sometimes months, for them to correct problems that only affect small populations of people.

If anyone has another solution, do advise.

(LD_LIBRARY_PATH, QTDIR, and the uic binary are all correct, for reference -- as is ld.so.conf)

K_S_R
12-08-2003, 04:05 PM
I'm having an issue as well.

Distro 1 is Fedora Core 1

automake = automake-1.7.8-1
make = make-3.79.1-18
qt = qt-3.1.2-14 (along with devel package)


Distro 2 is SuSE Pro 8.2

automake = automake-1.7.2-32
make = make-3.80-25
qt = qt3-3.1.1-62 (along with devel package)


And the error I get when compiling from either:


interface.cpp: In member function `void EQInterface::enableAllTypeFilters()':
interface.cpp:4650: error: integer constant is too large for "long" type

Zaphod
12-08-2003, 05:20 PM
Originally posted by EQDoze
uic: relocation error: /usr/lib/qt-3.1/lib/libqt-mt.so.3: undefined symbol: _ZNSs4_Rep11_S_terminalE



RedHat9, Qt3.1.1 installed from RPM.


RedHat 9 comes with Qt 3.1.1 by default. My development system is a stock RedHat 9 system with nothing custom installed. So I'm not sure what would be causing your issue. Did you download your Qt 3.1.1 RPMs from somewhere instead of using the stock ones that comes with RedHat 9?


Originally posted by K_S_R
I'm having an issue as well.

Distro 1 is Fedora Core 1

automake = automake-1.7.8-1
make = make-3.79.1-18
qt = qt-3.1.2-14 (along with devel package)


Distro 2 is SuSE Pro 8.2

automake = automake-1.7.2-32
make = make-3.80-25
qt = qt3-3.1.1-62 (along with devel package)


And the error I get when compiling from either:


interface.cpp: In member function `void EQInterface::enableAllTypeFilters()':
interface.cpp:4650: error: integer constant is too large for "long" type


What compiler and glibc are you using? And what processor type? Because, for some reason it is apparently falsely defining uint64_t to be unsigned long. What are the values __WORDSIZE is #defined to in /usr/include/bits/wordsize.h on the respective systems? Unless you are on a 64-bit processor (Opteron or Itanium) with a native word size of 64-bits, it should be defined as 32.

Enjoy,
Zaphod (dohpaZ)

ieatacid
12-08-2003, 06:01 PM
A little off-topic, but is there any way I could get it to save my zoom level when I zone or restart ShowEQ? Tried "save preferences but that didn't work. Is that value stored in an xml file somewhere?

Endor
12-08-2003, 09:51 PM
[
QUOTE]Originally posted by Zaphod
[
What compiler and glibc are you using? And what processor type? Because, for some reason it is apparently falsely defining uint64_t to be unsigned long. What are the values __WORDSIZE is #defined to in /usr/include/bits/wordsize.h on the respective systems? Unless you are on a 64-bit processor (Opteron or Itanium) with a native word size of 64-bits, it should be defined as 32.

Enjoy,
Zaphod (dohpaZ) [/B][/QUOTE]

I am also using Suse 8.2 also getting the
interface.cpp: In member function `voidEQInterface::enableAllTypeFilters()':
interface.cpp:4650: error: integer constant is too large for "long" type
error, here is the information you requested from K_S_R

compiler -- gcc version 3.3
glibc -- 2.3.2-6
processor -- Intel Celery
__WORDSIZE -- 32
Autoconf 2.5.7

I tweaked the code(probably totally incorrectly) so it compiles past that and come up with the error on the ui_mapcondialog.h stuff. There is only one autoconf installed, and apears to be what is supposed to be compatible but will try a few things on that. I am not much of a coder and sadly my job currently deals with the windows realm and I have let my linux knowledge deteriorate.

EQDoze
12-09-2003, 02:56 AM
Originally posted by Zaphod
RedHat 9 comes with Qt 3.1.1 by default. My development system is a stock RedHat 9 system with nothing custom installed. So I'm not sure what would be causing your issue. Did you download your Qt 3.1.1 RPMs from somewhere instead of using the stock ones that comes with RedHat 9?

[edited for brevity]

Enjoy,
Zaphod (dohpaZ)


Yes, my Qt 3.1.1 is taken directly from the CD set.

It's a known issue with RedHat with regards to removing an old version of Qt (2.3.x) and installing a new one. Although my system is RedHat 9, it is an upgrade from 7.3. The system is not "clean". However, what prompted me to post was that Trolltech indicated that that particular error can be attributed to some peculiarities with GCC 3.2.x Pentium optimizations.

Regardless of what causes it, I should have been more specific that my system is an upgrade from 7.3. I removed all desktop and related RPMs (i.e. KDE, Gnome, Qt, gtk) to try to get as close to a bare system as possible before I began the upgrade.

The problem first appeared while trying to build some KDE based applications. It disappeared when I built my own Qt -- using the various search tools I was unable to find how Qt managed to get its wires crossed (as that error indicates to me that it's not reading the correct libraries).

K_S_R
12-09-2003, 10:10 AM
What compiler and glibc are you using? And what processor type? Because, for some reason it is apparently falsely defining uint64_t to be unsigned long. What are the values __WORDSIZE is #defined to in /usr/include/bits/wordsize.h on the respective systems? Unless you are on a 64-bit processor (Opteron or Itanium) with a native word size of 64-bits, it should be defined as 32.

Distro 1 - Fedora Core 1

gcc version 3.3.2 20031022 (Red Hat Linux 3.3.2-1)
glibc-2.3.2-101.1
#define __WORDSIZE 32
Running on Pentium 3 1G.



Distro 2 - SuSE Pro 8.2

gcc version 3.3
glibc-2.3.2-6
#define __WORDSIZE 32
Running on Pentium 3 933MHz in VMware (host is Win2K Pro)


By the way Zaphod, thanks for all your work on this stuff.

showeqgratefull
12-09-2003, 12:58 PM
ok, was running into the same issue as this thread, and
i upgraded my autoconf to be version 2.57

i am running rh 7.2
qt 3.1.0



[root@localhost showeq]# autoconf --version
autoconf (GNU Autoconf) 2.57
Written by David J. MacKenzie and Akim Demaille.

Copyright 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

i followed the little tips of

export WANT_AUTOCONF_2_5=1

and

Add AC_PREREQ(2.5) to configure.in just before the call to AC_INIT(src/main.cpp). This should result in the top of configure.in looking


now i still get the same message...

any ideas?

thank you as always


showeqgratefull

lorien
12-09-2003, 03:40 PM
For everyone having the problem with:


interface.cpp: In member function `void EQInterface::enableAllTypeFilters()':
interface.cpp:4650: error: integer constant is too large for "long" type

You need to be using gcc3.2 instead of gcc3.3.

gcc3.3 does not deal with uint64_t the same way as previous versions.

K_S_R
12-09-2003, 04:32 PM
By adding ULL to the end of 0xFFFFFFFFFFFFFFFF (that is, 0xFFFFFFFFFFFFFFFFULL) in the following files, I was able to get it to compile:

interface.cpp
messagewindow.cpp
terminal.cpp

I haven't been able to test if it actually "works", but it does start up. I'll test functionallity when I get home.

Thanks to S_B_R for the tip.

S_B_R
12-09-2003, 04:58 PM
Same caveats as K_S_R's post but here's a patch...

Zaphod
12-10-2003, 11:04 AM
Originally posted by lorien
For everyone having the problem with:


interface.cpp: In member function `void EQInterface::enableAllTypeFilters()':
interface.cpp:4650: error: integer constant is too large for "long" type

You need to be using gcc3.2 instead of gcc3.3.

gcc3.3 does not deal with uint64_t the same way as previous versions.
I'd say that's a rather annoying bug in gcc 3.3. Unfortunately integer literal handling of 64-bit integer types is not really addressed in ISO/IEC 14882:1998(E) Programming languages -- C++ section 2.13.1 Integer literals. They are however addressed in ANSI/ISO/IEC 9899-1999 Programming languages -- C in section 6.4.4.1 Integer constants. In paragraph 1 it clearly demonstrates that the integer-suffix should be optional. Furthermore, in paragraph 5 it clearly states that "The type of an integer constant is the first of the coresponding list in which its value can be represented." This makes gcc 3.3's behaviour a clear standard conformance violation. I have yet to find a bugzilla entry for this issue. So I'll probably go waste my time getting gcc 3.3 installed for no other reason than to submit a bug report. Oh, joy... Oh, happy day...


Originally posted by K_S_R
By adding ULL to the end of 0xFFFFFFFFFFFFFFFF (that is, 0xFFFFFFFFFFFFFFFFULL) in the following files, I was able to get it to compile:

interface.cpp
messagewindow.cpp
terminal.cpp

Thanks for the fix.


Originally posted by S_B_R
Same caveats as K_S_R's post but here's a patch...
Thanks for the patch. It should work and if it doesn't the gcc folks have another bug report to receive.

Enjoy,
Zaphod (dohpaZ)

intous
12-10-2003, 02:53 PM
Originally posted by K_S_R
By adding ULL to the end of 0xFFFFFFFFFFFFFFFF (that is, 0xFFFFFFFFFFFFFFFFULL) in the following files, I was able to get it to compile:

interface.cpp
messagewindow.cpp
terminal.cpp

Thank you. Performing this allowed me to finally successfully compile seq5 on Fedora Core 1. I must say seq5 works great minus some docing issues.

:)

visad
12-11-2003, 10:53 AM
This is what I had to do to get this working on my system, those that are having troubles still might want to try all of this.
System as stands
Dell Lattitude C610
Mandrake 9.1
All packages are default on the system except autoconf 2.5 which was just added during this snafu.

Extracted items from showeq package

$ export WANT_AUTOCONF_2_5=1

Added AC_PREREQ(2.5) to configure.in just before the call to AC_INIT(src/main.cpp).

Added S_B_R patch to /showeq/src
$ patch <patchfilename

$ ./configure

ran the following in the /showeq/src directory (not sure why i had to run this with 2.5 installed)

$ /usr/lib/qt3/bin/uic mapicondialog.ui > ui_mapicondialog.h
$ /usr/lib/qt3/bin/uic -impl ui_mapicondialog.h mapicondialog.ui > ui_mapicondialog.cpp

$ make

At this point in time it compiled without issue and I am now running the latest and greated version.