Hello Dave, I tried to explain this feature (no doubt you have explain it perfectly) but he is looking for _how_ kernel module gets loaded and somehow (I wonder how!) dubs the entire process as "incremental link" ! On 23 May 2012 21:47, Dave Hylands <dhylands@xxxxxxxxx> wrote: > Hi Somanath, > > On Tue, May 22, 2012 at 2:56 AM, somanath sahoo <bapi_mvit2004@xxxxxxxxx> wrote: >> Hi, >> >> As newbie in linux kernel, I would like to understand the concept of >> "incremental linking " w.r.t to linux kernel module. > > Incremental linking is basically just taking some objects files, > linking them together to produce a larger object file. The object file > still has undefined references. It will also coalesce sections of the > same name. The kernel likes to use sections for storing pointers to > initcall functions and other things like that. > > Some people might also call this partial linking. The kernel uses this > technique for the main portion of the kernel as well. If you look > through your build directory, you will find a whole bunch of > built-in.o files. Each one of these is a partially linked object file > containing all of the object files from the current directory and > built-in.o files from directories below. > > With kernel modules, there are some special automatically generated C > files which also get linked in (IIRC that have a name like foo.mod.c) > > A kernel module is conceptually identical to a shared library (which > is also partially linked and may contain unresolved references). > > You can do incremental linking by doing: > > echo "int foo1(void) { return 1; }" > foo1.c > echo "int foo2(void) { return 2; }" > foo2.c > gcc -c foo1.c > gcc -c foo2.c > ld -r -o foo.o foo1.o foo2.o > > You'll now have foo.o which has both foo1.o and foo2.o partially > linked together, which you can see by using: > > nm foo.o > > -- > Dave Hylands > Shuswap, BC, Canada > http://www.davehylands.com > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies