On Tue, Dec 16, 2008 at 11:54 AM, nidhi mittal <nidhimitta...@gmail.com>wrote:

> hi all i know its not directly related to kernel ...but its the doubt i got
> while kernel programming only ..its in c langugage
> it wd be kind if you accept this ques and answer it
> i have a doubt regarding linking of libraries in c program
> lets say i have a hello.c C program and hello is executable file
> correspoding to this.
>
> i read that if libraries are linked dynamically then size of executable
> file hello is smaller as compared to the size of executable if libararies
> are linked statically .
> in my opinion that means that in case of dynamic linked library hello does
> not contain libraries with it it is just linked with them.

when you compile your executable you need to link it to already existing
module with something like
gcc  -l"name" -L"path_of_lib" filename.c -o filename.bin

For loading symbol from library you can use dlopen() and dlsym() calls.


> may be hello contain references to symbols ...where they are present in
> linked libraries.
>
> now suppose i transfer this hello file to some other machine but same
> platform which doesnt contain these libraries ....will it work there ?
> i hope it shd not
> but i have heard ppl say that executable file is complete in itself and it
> works taken anywhere on same platform.
>
It wont run, typically for any symbol to get resolve the lib should be
installed on the target machine. Executables also have many formats. look
for them.


> pl clarify ..
> where i m wrong i know there is some fault in my understanding of linking
> concept but unable to clarify it from google...

You haven't googled properly.

Suggested reading:
man dlopen, man dlsym, man ldconfig. Richard steven Advance unix
programming.
do some googling for shared lib on linux.

>
> --
> Thanks & Regards
> Nidhi
>

-Anuz

Reply via email to