To conclude the topic of using crle(1) and the observed error message: > ld.so.1: ps: fatal: /usr/lib/libc.so.1: wrong ELF class: ELFCLASS32 > Killed
I had asked (in a private email): > If you run "truss -fe" you'll see the environment passed to each process. > Is LD_CONFIG shown to exist? And the answer was that LD_CONFIG was set. So, through a series of historic events it seemed that a default configuration file was being created in /var/ld/ld.config, but that an LD_CONFIG setting in /etc/profile was causing all applications (32-bit and 64-bit) to see this one file. Here's a wrap up of some of my clarifications and recommendations: The 32-bit ld.so.1 looks for /var/ld/ld.config by default, you do not have to set LD_CONFIG. The 64-bit ld.so.1 looks for /var/ld/64/ld.config by default, you do not have to set LD_CONFIG. By setting LD_CONFIG, *all* processes that see this environment variable are reading the associated configuration file. So, if this configuration file uses 32-bit paths, any 64-bit process that sees the environment variable is being given bad information. And similarly, if this configuration file uses 64-bit paths, any 32-bit process that sees the environment variable is being given bad information. Use LD_CONFIG to point to a "temporary" configuration file as you experiment. Better yet, use LD_CONFIG_32 and LD_CONFIG_64 to be precise in regards the configuration files use. Once happy with the configuration file, populate it in the default location (/var/ld/ld.config or /var/ld/64/ld.config) and remove any LD_CONFIG settings. It would be more optimal, and perhaps less confusing to use: % crle -u -l /your/32-bit/libs:/3rd-party/32-bit/libs This will create /var/ld/ld.config, and append your search paths to the 32-bit system defaults. This configuration file will be used by default by all 32-bit processes. % crle -64 -u -l /your/64-bit/libs:/3rd-party/64-bit/libs This will create /var/ld/64/ld.config, and append your search paths to the 64-bit system defaults. This configuration file will be used by default by all 64-bit processes. Unset LD_CONFIG. It's obvious from these discussions that the crle(1) man page could do with some improvement, so I'll work to populate the information above into the man page over the coming months. -- Rod.