EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Linux Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=588)
-   -   CPU you selected does not support x86-64 instruction set (https://www.eqemulator.org/forums/showthread.php?t=33879)

Harcourt 07-19-2011 05:16 PM

CPU you selected does not support x86-64 instruction set
 
I've searched for this, but nothing on this site turns up. This error seems common in a number of other projects, but I bet someone here has ran into it.

Yes, I'm trying to build on a 64-bit machine. All of my machines have over 4G, and are running 64-bit OS's. I'm sure EQEmu will appreciate some extra RAM.

During the build, these errors come out on stderr:

cc1plus: error: CPU you selected does not support x86-64 instruction set

(That message came during a "make clean").

When I do a regular make I get 97 of these messages before the build
halts during the compile of common/timer.cpp

I have downloaded the source tree from SVN today, so this is on the most recent code base.

Does anyone have a recommendation? I really want to build this from source, as I would like to make some local changes.

lerxst2112 07-19-2011 10:33 PM

What is the output from uname -a?

Harcourt 07-19-2011 10:49 PM

Linux xxxxxxxxxxxxxxx 2.6.38.8-35.fc15.x86_64 #1 SMP Wed Jul 6 13:58:54 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

lerxst2112 07-19-2011 11:39 PM

Ok. If you google for that error you'll see it's generally due to one or more of the packages you have installed. I would go through the prereqs for the server like MySQL, Perl, etc, and make sure they are up to date and installed for the appropriate architecture.

Harcourt 07-20-2011 02:40 PM

I've googled the error, and it didn't seem to me that there was any consensus on what the cause was. I am leaning towards something in a makefile assuming 32-bits, unless people are building this code in a 64-bit environment.

I did check on the installed software, here are the installed packages matching the prereqs in the linux server guides:

Installed Packages
gcc.x86_64 4.6.0-9.fc15 @anaconda-InstallationRepo-201105131943.x86_64
gcc-c++.x86_64 4.6.0-9.fc15 @anaconda-InstallationRepo-201105131943.x86_64
mysql.x86_64 5.5.14-2.fc15 @anaconda-InstallationRepo-201105131943.x86_64
mysql-devel.x86_64 5.5.14-2.fc15 @updates
mysql-server.x86_64 5.5.14-2.fc15 @anaconda-InstallationRepo-201105131943.x86_64
perl.x86_64 4:5.12.4-159.fc15
@anaconda-InstallationRepo-201105131943.x86_64
perl-IO-stringy.noarch
2.110-15.fc15 @fedora


I believe that perl-IO-stringy is noarch since it is not executable code, but rather PERL. The others are the proper 64-bit versions.

Harcourt 07-20-2011 06:28 PM

Think I see the problem
 
Nothing to do with installed packages.

The default makefiles build with -march=i686 which is causing all of those errors on my 64-bit system.

In several directories I see makefile.a64, so manually issuing a "make -f makefile.a64" gets me further along.

There was one problem in zone where the PERL_FLAGS were not being used, I modified makefile.a64 to work like makefile in that respect.

There were a few directories with no makefile.a64, so I copied makefile to makefile.a64 and switched the architecture.

Everything builds. There are a ton of warnings for various things that shouldn't hurt (comparison between signed and unsigned).

Of course, since it builds it must run correctly.

I'm interested in hearing comments on the above. If folks are building 64-bit just fine, then I am somehow in the minority and would like to know why. If I am one of a handful doing this, then it would be nice to know who is maintaining the a64 makefiles and discuss changes might make others' have an easier time.

I would also feel a ton better if those warnings were gone, and may clean up my build tree. If there is interest we can discuss getting those changes back into subversion at some point.

lerxst2112 07-20-2011 06:32 PM

Many people are able to compile for 64 bit just fine.

Based on my google search, what you're looking for is something specifying -march, -mcpu, or -mtune with an inappropriate value for 64-bit support.

Here's a likely candidate from the makefile in zone. I didn't check any others.

COPTS=$(WFLAGS) -O -g -march=i686 -pthread -pipe -D_GNU_SOURCE -DINVERSEXY -DFX -DZONE $(DFLAGS) $(MYSQL_FLAGS) $(PERL_FLAGS)

Harcourt 07-20-2011 06:58 PM

That is pretty much what I just said.

lerxst2112 07-20-2011 09:09 PM

Well, I replied before I saw your post. Good luck with your server.

mgellan 08-08-2011 05:16 PM

I changed the -march=686 to -march=athlon64 (I think, been a while) to ensure everything compiled right. Worked like a charm.

Regards,
Mg

LordAdakos 11-22-2011 11:03 AM

another thing you can do is to just install on an i386 version, and then do a apt-get install linux-image-2.6-686-bigmem (if i recall correctly) to utilize more than 4 gigs of ram.

provocating 12-17-2011 11:45 PM

I did get mine to compile, it even ran with no errors. Unfortunately the zones crash as you go in. My database and source are the same as my Debian 32 bit. I ran everything through the command line, and checked the logs and there are no errors, I just get a message that the zone restarted.

There is another message on the forum with other people getting that same "rebooting zone" message that have tried to run x64. Anyone had success ?

lerxst2112 12-18-2011 12:20 AM

It would help to see a stack trace of the crash. Load a core file in gdb and type 'bt'

provocating 12-18-2011 12:37 AM

Is there a way to force it to do a core dump ? The zone appears to be rebooting, but there is never a core dump to debug.

provocating 12-18-2011 12:56 AM

I ended up removing the -O from the makefiles and all is well.

Just for notation, this is vSphere 5, Debian 6 AMD64 build, with a Xeon 8 core processor.


All times are GMT -4. The time now is 06:14 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.