[geeks] Solaris linking issue

Francois Dion francois.dion at gmail.com
Fri Dec 5 06:44:32 CST 2008


On Fri, Dec 5, 2008 at 12:07 AM, Joshua Boyd <jdboyd at jdboyd.net> wrote:
> On Dec 3, 2008, at 5:31 PM, Joshua Boyd wrote:
>
>> I have a program that depends on ICU, a unicode library.  Solaris comes
>> with an older version (that is too old) of this library at /usr/lib.  Before
>> realizing that (and it is too old anyway), I installed the latest released
>> version in /usr/local/.
>>
>> Anyway, then I try to run my program, it gripes about not finding the
>> symbol ucol_close_4_0.  That symbol is found in
>> /usr/local/lib/libicui18n.so, but not in /usr/lib.
>>
>> So, I suspect that the run time linker is picking the older /usr/lib.  How
>> do I force it to correct this without removing the old one(which I suspect
>> is required elsewhere) or permanently changing crle since I only want this
>> one program to use the new library?
>
> In the end, the issue turned out to be that the new build of ICU was 64bits
> while everything else was 32bits, including the Sun installed version.
>  Recompiling ICU as 32bits fixed the problem right up.

That doesn't sound right. Everything is available in 32 and 64 bit
under Solaris 10. I've not had to deal with 32 bit only libs.

/usr/lib/64/libicui18n.so -> ./libicui18n.so.3

You have a different crle path for 64 bit:

crle -64
vs
crle

As for your original issue of hardwiring a lib, you use the -R option:
"Builds dynamic library search paths into the executable file."

I've used it in the past, works as you would expect.

Francois



More information about the geeks mailing list