PDA

View Full Version : Mandrake 8.2 - Compilation Problem



Dresk
04-29-2002, 06:05 PM
Greetings,

I have acquired the latest CVS of the ShowEQ source, along with installed the proper packages on my Mandrake 8.2 installation to use g++-3.04 and gcc-3.0.4 . I have properly used the export command to setup the two compilers to work, along with having downloaded pre-compiled qt2 gcc3 libaries, of which I export properly and have the configure script recognize properly.

The problem I face is that, during compile time, I recognize the compiler begin to report a warning from libtool:
libtool: link: warning: libary '/usr/lib/libgdbm.la' was moved
This occurs during the object link process of the compilation stage. Whether or not this is critical to the compilation process, I do not know. I have checked my /usr/lib folder, and listed the link of which appears to be fine. Yes, I have both the devel and library packets of libgdbm installed.

Regardless, in the end I am left with showeq.C, and showeqitemdbtool.C , obviously of which both do not work. I am not familiar with what this extension means between the two compiled executables, although I assume it means something was not linked right. When I run the program, I receive a relocation error, with an undefined symbol.

Again, I am quite positive gcc and g++ are properly setup, along with gcc3 qt2 compiled libraries(the configure script points to the directory I have them at). Any help on this topic would be appreciated.

Edit: As an aside, I have Mandrake 8.1 on my home system, of which I have ShowEQ compiled and processing flawlessly. I doubt I am missing any libaries here, it is more likely something to do with the compilation process.

Cryonic
04-29-2002, 06:29 PM
Gazing into the crystal ball of troubleshooting, I see.... nothing:

post the exact errors (both during compile and when attempting to start showeq.C).

Dresk
04-29-2002, 06:40 PM
Greetings again,

The information regaurding libgdbm is as follows:

-

/bin/sh ../libtool --mode=link g++-3.0.4 -g -O2 -o showeq.C main.o spawnshell.o spawnlist.o spellshell.o spelllist.o cpreferences.o vpacket.o editor.o filter.o m_spawnshell.o m_spawnlist.o m_spellshell.o m_spelllist.o m_editor.o packet.o m_packet.o interface.o m_interface.o compass.o m_compass.o map.o m_map.o util.o pcap.o experiencelog.o m_experiencelog.o msgdlg.o m_msgdlg.o player.o m_player.o decode.o m_decode.o skilllist.o m_skilllist.o statlist.o m_statlist.o itemdb.o gdbmconv.o -L/opt/qt-gcc3-2.3.2//lib -lqt -lEQ -lgdbm -lz -lpcap -lpthread
mkdir .libs
libtool: link: warning: library `/usr/lib/libgdbm.la' was moved.
libtool: link: warning: library `/usr/lib/libgdbm.la' was moved.

-

As for what happens when attempting to run the file:

-
./showeq.C: relocation error: ./showeq.C: undefined symbol: _ZN2Qt9lightGrayE

-

Upon somewhat inspection, it seems to be a possible QT problem. Again, any help is appreciated.

Cryonic
04-29-2002, 07:44 PM
are the environment variables for QT still set when you try to start showeq?

Dresk
04-29-2002, 07:48 PM
Yes, I am positive, I checked the export stream and attempted it again, the QTDIR is properly set when attempting to run showeq.C.

Edit: Is there any reason for the .C extension being applied to my compiled executables? Perhaps that would explain somewhat the problem?

Cerpox
05-16-2002, 06:05 PM
I am getting the same error. Im guessing somewhere on another post someone told you how to fix this. Can someone point me in the right direction to getting this error on this Thread fixed. Thanks

UncleBen
05-16-2002, 08:23 PM
I followed the guide for Mandrake 8.1 except for plugging in gcc-3.0.4 and g++-3.0.4 where it makes references to -3.0.1 and got the same message 'libgdbm.la moved'

didn't seem to matter though, cause everything came out fine. not sure what your problem might be, but this guide worked for 2 different computers using 8.2 now.

here's the guide I used

http://www.hackersquest.org/boards/viewtopic.php?t=275

not sure if it matters, but when I compiled qt-2.3.2, I used:

./configure -thread
make -j2

waldi
05-31-2002, 01:51 PM
I am unfortunately having exactly the same problem, right to the letter of the "relocation error" that 's being returned. Can anyone shed any more light on the subject?

From experience, my guess is that a runtime-linked library is being loaded, but that library was compiled using a pre-gcc3 compiler. Thus the symbol "_ZN2Qt0lightGrayE" was mangled differently than the gcc3 version. This bothers me, as i see the "Qt" in the name, and wonder if it references the "QT" library that i compiled. Perhaps there is the wrong QT library that is being referenced by the running program?

I definitely compiled my own downloaded QT-2.3.2 library, and it took a painstaking 3 hours to build. I would not have "missed" that step =)

Thanks for any input someone else may have!

fryfrog
05-31-2002, 01:57 PM
are you sure you downloaded and compiled qt-2.3.2 using gcc3? if you did, please tell me how just to verify.

you SHOULD modify a file configs/linux-g++-shared and change all "gcc" and "g++" to what ever the name of your gcc-3.0 is.

waldi
05-31-2002, 02:45 PM
OK, after reading what i wrote 2 posts up, i decided to go on a "search" mission, and found that the running program was trying to access the QT in the "/usr/lib/qt2" directory. I didn't make this dir, dunno who did, but that's not where i built qt-2.3.2.

So, in horrible hack-fest fashion, i renamed qt2 to qt2_backup, then renamed qt-2.3.2 to qt2, then re-ran showeq. Can't wait to see what that's gonna break!!!

Damn if that didn't fix that problem with showeq though!!! woo-hoo!!!

However, i quickly discovered that libEQ.a was not found. I made sure the showeq.conf file has the "BrokenDecode" set to zero (0), made sure the md5sum of the libEQ.a file was correct, made sure that the ONLY copy of libEQ.a was in /usr/lib/, and it still barked at me at startup. Nothing was being decoded.

So, now that i've changed my problem, any other insights?

Thanks!

fryfrog
05-31-2002, 03:33 PM
a.) fix taht qt2 dir name thing back, qt2 dir is made by mandrake and kde will kick your ass next time you try and run it (or other stuff maybe)

b.) when compiling seq, do "make -f Makefile.dist ; CC=gcc-3.0.4 CXX=g++-3.0.4 QTDIR=/dir/to/qt ./configure && make && make install"

Mr. Suspicious
05-31-2002, 07:24 PM
I made sure the showeq.conf file has the "BrokenDecode" set to zero (0),


Current version doesn't use showeq.conf, you sure you are using the latest version of ShowEQ?

edit: NM, saw you made double post: http://seq.sourceforge.net/showthread.php?s=&threadid=1335

UncleBen
06-01-2002, 11:21 AM
not to be too much of an asshole, but it you actually read my post 1 reply over your head and followed the howto guide I linked to, you wouldn't have had that problem :p

the person that created that /usr/lib/qt2 directory was the Mandrake 8.2 installation. You kinda need it as fry said so fix it :)



Originally posted by UncleBen
I followed the guide for Mandrake 8.1 except for plugging in gcc-3.0.4 and g++-3.0.4 where it makes references to -3.0.1 and got the same message 'libgdbm.la moved'

didn't seem to matter though, cause everything came out fine. not sure what your problem might be, but this guide worked for 2 different computers using 8.2 now.

here's the guide I used

http://www.hackersquest.org/boards/viewtopic.php?t=275

not sure if it matters, but when I compiled qt-2.3.2, I used:

./configure -thread
make -j2