Skip to contentSkip to conversation

running ia32 binaries with same .so names as ia64

Linux-ia64 Ross A. Towle 2 participants 2 messages Oct 18, 2000

lore
Share & tools
lore
#0 lore raw

Since Perl is not working for the SPEC harness, I have brought over specperl that SPEC2000 distribution disk which is for RedHat6.0 and later.

When I run it looks for an IA32 libgdbm.so.2 and reports "error in loading shared libraries: libgdbm.so.2: ELF file class not 32-bit". So I copied it from a IA32 box from /usr/lib and put it in /usr/i386-glibc21-linux/usr/lib. This still does not fix the problem (same error message). But if I put it in /usr/lib/temp and set LD_LIBRARY_PATH to /usr/lib/temp:$LD_LIBRARY_PATH then everything runs fine.

Any ideas on how to do this without the LD_LIBRARY_PATH?

To generalize, if I want to bring over a IA32 binary linked against some .so's with the same name(s) as on IA64, where do I place the IA32 .so's so they are found without setting LD_LIBRARY_PATH?

-Ross

#1 lore raw

Ross-

In a word, `ldconfig' is your friend.

We've modified the Runtime loader to only get libraries of the appropriate architecture out of the /etc/ld.so.cache'. All you need to do is put your IA64 and IA32 libraries in different directories, put those directory names in /etc/ld.so.conf' and then run `ldconfig' to create the cache. From then on your IA64 and IA32 programs can refer to libraries of the same name and get the right one.

As an example, my `/etc/ld.so.conf' contains:

	/usr/lib
	/usr/X11R6/lib
	/usr/ia32/lib
	/usr/ia32/urs/lib
	/usr/ia32/usr/X11R6/lib

Just make sure you re-run `ldconfig' after you put a new library in one of these directories.

Quoted 23 lines · Ross A. Towle

Since Perl is not working for the SPEC harness, I have brought over specperl that SPEC2000 distribution disk which is for RedHat6.0 and later.

When I run it looks for an IA32 libgdbm.so.2 and reports "error in loading shared libraries: libgdbm.so.2: ELF file class not 32-bit". So I copied it from a IA32 box from /usr/lib and put it in /usr/i386-glibc21-linux/usr/lib. This still does not fix the problem (same error message). But if I put it in /usr/lib/temp and set LD_LIBRARY_PATH to /usr/lib/temp:$LD_LIBRARY_PATH then everything runs fine.

Any ideas on how to do this without the LD_LIBRARY_PATH?

To generalize, if I want to bring over a IA32 binary linked against some .so's with the same name(s) as on IA64, where do I place the IA32 .so's so they are found without setting LD_LIBRARY_PATH?

-Ross

_______________________________________________
Linux-IA64 mailing list
[email protected]
http://lists.linuxia64.org/lists/listinfo/linux-ia64

Signature · 4 lines
Don Dugger
"Censeo Toto nos in Kansa esse decisse." - D. Gale
[email protected]
Ph: 303/938-9838