AMD64/Intel 64 library path


When I attempted to install both IA-32 and AMD64/Intel 64 versions of ROOT, I noticed that the $ROOTSYS based installation always use a hardwired lib and never lib64 (which would allow you to run binaries linked to ROOT with both bit length without switching $ROOTSYS). This behavior in fact violates the ABI standard for Linux (version 0.98, p. 119, see

I applied a simple patch to fix this behavior. I wonder if this should be rather the default behavior for the ROOT installation.


Yue Shi Lai
root_v5.16.00-x86_64_abi.patch.txt (414 Bytes)


I’m not sure what merit the referred document ( has. Although the appendix referred to specify

but on the other hand

which to me indicates that the normal Linux FHS ( … MATLIBRARI)

There is thus no requirements that true-64bit libraries live in /usr/lib64.

I think that the multi-architecture question is quite confusing at the moment. Note, that I talk about multi-arch in general - the problem is not limited to i386 vs. amd64, there is also mips(el) O32, N32, N64, hppa, and so on. It seems that the general recommendation is to install libraries into /usr/gcc -dumpmachine/lib - no matter what, and then let the OS make the proper sym-links. However, no consensus seems to have emerged.

Since I know Debian best, let me comment on that. Debian always put libraries in /usr/lib, no matter whether the target architecture is a multi-architecture or not. On AMD64, there’s a sym-link from /usr/lib64 to /usr/lib to deal with ‘weird’ applications. There’s a study done ( … report.pdf) for HP about multi-arch in Debian in general - it might be instructive to read.

I do not think your patch is really worth the effort. In all likeliness it will break many installations. Your change is certainly by far not enough for proper behaviour. You will have to change numerous places in the code where the library path is hard-coded, and various support scripts.

On the other hand, you can do a ‘fixed directory’ installation, specifying a multi-arch library installation directory, for example

./configure --prefix=/opt/root --libdir=/opt/root/`gcc -dumpmachine`

On my MacPRO machine (amd64) I run a i386 chroot to build i386 packages on the very fast machine (8GB, Xeon Quad-core :-), leaving my puny laptop to do other work.

So in short, I don’t think your suggestion is really a good idea.