|
[Rivet] 64 bit rootJames Monk jmonk at fnal.govMon Feb 25 16:22:11 GMT 2008
Hi everyone, I just installed root again on my laptop and have once again come across problem linking with Rivet/AGILe. This time it's because the root build system uses the -m64 flag, which creates 64 bit x86_64 libs and installs them in the default area of /usr/local/lib. Rivet, on the other hand, creates 32 bit i386 libs: /usr/local/lib/libAGILe.dylib: Mach-O dynamically linked shared library i386 /usr/local/lib/root/libCore.dylib: Mach-O 64-bit dynamically linked shared library x86_64 compare this to the supplied gcc libraries for instance: /usr/lib/libgcc_s.1.dylib: Mach-O universal binary with 4 architectures /usr/lib/libgcc_s.1.dylib (for architecture i386): Mach-O dynamically linked shared library i386 /usr/lib/libgcc_s.1.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64 /usr/lib/libgcc_s.1.dylib (for architecture ppc): Mach-O dynamically linked shared library ppc /usr/lib/libgcc_s.1.dylib (for architecture ppc64): Mach-O 64-bit dynamically linked shared library ppc64 Because root adds the -m64 flag to the rivetgun link line it cannot use the i386 AGILe libs and so there are undefined symbols all over the place. Obviously I will modify the root build script to create a fat library that contains both the i386 and x86_64 objects, but maybe I should also modify the Cedar autotools to create a fat binary of Cedar libraries for OSX rather than just the i386 ones - that way when someone forces 64 bit mode in future it will work without modification because the Mach-O linker determines which architecture it should be using. Until then, anyone using rivetgun on a 64 bit mac may run up against this problem, depending upon how root was compiled. cheers, James
More information about the Rivet mailing list |