Dear Craftsmen,
I am trying to build ROOT for a i386 (m32) architecture on
a X86_64 linux machine.
Obviously setting -CMAKE_CXX_FLAGS=‘m32’ -CMAKE_C_FLAGS=‘m32’ is not enough.
I see in cmakes log: – Native target architecture is X86
Is that still possible and if so which FLAGS are needed.
Motivation for the effort:
I would like to rebuild the eventviewer of the OPAL experiment https://homepages.physik.uni-muenchen.de/~Otto.Schaile/opal.html
with a modern version of ROOT. (Currently 5.34.03, 2013 is used)
This software (CERNLIB, ZEBRA, ROPE) only runs with 32bit.
Please check that you haver ROOT’s dependencies also available in 32bit, otherwise CMake will find the 64bit versions. You may have to adjust lib to lib32 in the config files as well, depending on your distro. Finally, you could try to run cmake from within a linux32 shell.
This will be very very painful. CMake isn’t exactly famous for its cross-compilation support, and ROOT has a hard time because of several tools that are needed at build time (target=host) and are build artifacts (target=target). In short: it might be a lot easier if you “just” grab a virtual machine… Would that be an option?
If your 32bit libraries are in, e.g. /lib32 and /usr/lib32, then you should check that CMake is not finding things from /lib or /usr/lib (or /lib64 and /usr/lib64 if 32bit stuff is in lib and 64bit stuff in lib64). You can use file $lib to check what format it’s in (as shown in the issue linked above for the root binary at the end of the build).
Hi,
my friendly sysmanager made me a virtual i386 bionic linux.
There cmake + build went like a charm.
Now my real work starts (linking it with CERNLIB &Co)
Thank you all for the help
Otto