How to compile on AMD64 bits using -m32 flag?


I am using root version 3.10/02. I need to use this older version because of compability issues with CMS software shared libraries.

I am running root on AMD64 bits, however I would like to compile my root macros in 32 bit mode , using -m32 flag, again because of compability issues.

Within root command prompt, I have run:

(const char* 0x858682c)“cd $BuildDir ; g++ -c $Opt -pipe -Wall -W -Woverloaded-viles ; g++ $ObjectFiles -shared -Wl,-soname,$ -O -o $SharedLib”

then I have included the -m32 flag:
gSystem->SetMakeSharedLib(“cd $BuildDir ; g++ -m32 -c $Opt -pipe -Wall -W -Woverloaded-virtual -fPIC -Iinclude -D_REENTRANT $IncludePath $SourceFiles ; g++ -m32 $ObjectFiles -shared -Wl,-soname,$ -O -o $SharedLib”)

However, when trying to compile using ACLiC I got:
{standard input}: Assembler messages:
{standard input}:12: Error: suffix or operands invalid for push' {standard input}:16: Error: suffix or operands invalid forpush’
{standard input}:18: Error: suffix or operands invalid for push' {standard input}:22: Error: suffix or operands invalid forpop’
{standard input}:23: Internal error, aborting at …/…/gas/config/tc-i386.c line 3500 in output_imm
Please report this bug.

Am I doing something wrong? Is there any other way to compile in 32 bits using ACLiC ?

Best Regards

Pedro Ribeiro


You correctly modified the infor for ACLiC … however it might be that just adding -m32 is not sufficient. Run root [] gDebug = 7; root [] .L will print what ACLiC did and leave the temporary file around. You can then directly play around with the option of the compiler to find the correct way to compile.


Are you by change running with a version of ROOT compiled for 64 bits (default) on AMD64 ?
This cannot work, you must install ROOT with the m32 option.