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

Re: what is the difference between shared and static libraries



Good explanation ... I would like to know
how static and shared libraries are used when
the program is running ( how kernel handles it ?)
expecially things germane to symbol table building
and addressing.
it will be good if I can get some good material in web ...

-KS

Aravind Sadagopan wrote:

> .Let me explain the difference (as asked umpteen times)
>
> STATIC LIBRARY
> ===============
> 1. Collection of one or more object files containing precompiled code
> 2. Named with a ".a" extension
> 3. Code in static libraries is linked in to the program at compile time
>
> ~~~~~~~~~~
> 4. Becuase it is linked at compiled time the final executable size is much
> larger.
> 5. The advantage is that you dont have to go hunting around for dependencies,
> your executable is an independent unit
> 6.  for any change in library your code has to be recompiled
>
> Creating a static lib
> ---------------
> suppose your code is libramesh.c ..do the following
>
> gcc -c libramesh.c -o libramesh.o
> ar rcs libramesh.a libramesh.o
>
> use nm libramesh.a to list the members of your libraray
>
> SHARED LIBRARY
> ================
> 1. Collection of object files containing precompiled code
> 2. Name ".so.x" where x is a veriosn
> 3. code in shared library is linked to program at run time
> 4. Because it is linked at run time they offer lesser space
> 5. They requiree fewer resources
> 6. Use lesser system memory
> 7. Disadvantage is you have to satisfy all the shared library dependencies..a
> headache
> 8. maintanence is easy
>
> Creating a shared lib
> ----------------
> gcc -fPIC -g -c libramesh.c -o libramesh.o
> gcc -g -shared -Wl, -soname,libramesh.so -o libramesh.so.1.0 libramesh.o -lc
>
> Make sure your library path exists in LD_LIBRARY_PATH before using it :)
>
> Hope this explains it
>
> Cheers
> Aravind S
>
> "Ramesh.S" wrote:
>
> > hi all,
> >
> > can anybody explain me the difference between the shared and static
> > libraries.. both are going to be included before executoion..
> > but even static libraries are also shared among rprograms know then why
> > specifically two names are given.. i am not clear in this hting..
> >
> > also if i am writing a fucntion for converting a long value to  a string
> > how to make is as a library... i heard that we can use
> > ar archive.. but we have to compile it before or what.. if compiling means
> > it should contain main().. then how can other program cna use that
> > library..
> > can anybody explain me from scratch.. i am very much interested in having
> > my own libraries.. help me..
> >
> > ramesh
> >
> > _________________________________________________________
> > Do You Yahoo!?
> > Get your free @yahoo.com address at http://mail.yahoo.com
> >
> > ---------------------------------------------
> > Find out more about this and other Linux India
> > mailing lists at http://lists.linux-india.org/
>
> --
> Living on Earth is expensive, but it does include a free trip
> round the sun
>
> ---------------------------------------------
> An alpha version of a web based tool to manage
> your subscription with this mailing list is at
> http://lists.linux-india.org/cgi-bin/mj_wwwusr