[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

Re: shared library problem



Hi Shridhar 
        I tried this on Solaris cc. The option for the same is -h name. the help for this says somethings like 


 -h name
          Assigns a name to a shared dynamic library; allows  you
          to keep different versions of a library.

          In general, the name after -h should be the same as the
          file  name given in the -o option. The space between -h
          and name is optional.

          The linker assigns the specified name  to  the  library
          and records the name in the library file as the intrin-
          sic name of the library. If there is no -h name option,
          then no intrinsic name is recorded in the library file.

          When the runtime linker loads the library into an  exe-
          cutable  file,  it  copies  the intrinsic name from the
          library file into the executable, into a list of needed
          shared library files. Every executable has such a list.
          If there is no intrinsic name of a shared library, then
          the  linker  copies the path of the shared library file
          instead.



What I found was that while compiling It requires the file name to be libmy.so if I give
-l option. The name specified by -h option comes into picture only while executing the 
file and not during compilation or linking. This still doesnot solve our original problem 
and do U know any utility of this feature?

regards,
mallik.




Shridhar Daithankar wrote:
> 
> Have you used -soname flag. I sets an internal field of library which is
> preferred.
> 
> i.e. if you have a file myfile.so with internal field set to mylib, then -lmylib
> will pick up myfile.so even if there is no file mylib.so.
> 
> This is a recommended method rather than relying on file name.
> 
> man ld for more details...
> 
>  Shridhar
> 
> "Vani R." wrote:
> 
> > Hi sumit,
> >
> > That's fine. It works for me also. but what i want is using -L and -l options.
> > I am giving the library path where the .so file is existing and -l option to
> > specify the library name ( mylib.so ) . But when i use these options , i am
> > getting error as "mylib.so - no such file or directory" . What should i do ??