Re: static compilation or as a module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/22/06, Rajaram Suryanarayanan <rajaram_linux@xxxxxxxxx> wrote:
>
> Fawad Lateef <fawadlateef@xxxxxxxxx> wrote:
>  On 2/18/06, Rajaram Suryanarayanan wrote:
> >
> > I often see that some kernel subcomponents cannot be compiled as a module
> > in "make xconfig". They can only be compiled statically or never.
> > So I want to understand what is the criteria for this ? What are the
> things
> > that can make a set of kernel code never suitable for compiling it as a
> > module ?
> >
>
> I think this happens only for those modules which must be required by
> the kernel and can't be compiled as loadable module __and__ most of
> the options actually not for compiling some code rather those symbols
> are required with-in the module/code going to be compile. As you can
> compile almost all drivers as module (also IO Scheduler etc) but if
> they required any symbol (with-in their code) then it won't be
> selected as M because they are not used for module compiling rather
> they are internal #ifdef for that module.
>
> I hope this will clear your doubts ...
>
>
> Thanks for your reply.
>  But I am not able to understand your reply. Could you please be more clear
> ?
>

ok, I will try to explain more clearly.

Static compilation is required for code which are required for basic
kernel functionalities and most of the options (which can be selected
as Y/N not as M) are the conditional compilation symbols which allows
to add some extra features in the kernel like in "General setup" all
the options must be selected as Y or N but not M as they are for the
conditional compilation not for some module code. For example in
"general setup" selecting swap actually defines CONFIG_SWAP as 1 so
the kernel compilation will include code realted to that SWAP option

Beside these (conditional compilation) kind of options all __other__
options can be selected as M like in "Block layer", support for large
block devices must be selected as Y because it defines support of
large block devices in kernel (as it sets sector_t to u64) but the "IO
Schedulers" can be selected as M because they are in different code
files and contains loadable module support (obviously they are not
conditional compilation options)

I hope now it I am able to make it little more clear :)

--
Fawad Lateef

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux