How to build an external module in a specified directory?

Alexander Kapshuk alexander.kapshuk at gmail.com
Tue Jan 3 09:11:52 EST 2017


On Tue, Jan 3, 2017 at 9:32 AM, Shiyao Ma <i at introo.me> wrote:
> Hi Alexander,
>
>
> Looking at that Makefile:
>
> # Use make M=dir to specify directory of external module to build
> # Old syntax make ... SUBDIRS=$PWD is still supported
> # Setting the environment variable KBUILD_EXTMOD take precedence
> ifdef SUBDIRS
>   KBUILD_EXTMOD ?= $(SUBDIRS)
> endif
>
> ifeq ("$(origin M)", "command line")
>   KBUILD_EXTMOD := $(M)
> endif
>
>
> So specifying KBUILD_EXTMOD or M is the same thing, which tells KBUILD the
> directory that the Makefile for the module is in.
> And by default, KBUILD will build the module in KBUILD_EXTMOD.
>
> What I want is tell KBUILD to build the modules in a specified directory.
>
>
>
> Regards.
>
>
>
>
>
> On Jan 2, 2017, 20:30 +0800, Alexander Kapshuk
> <alexander.kapshuk at gmail.com>, wrote:
>
> On Mon, Jan 2, 2017 at 1:39 PM, Shiyao Ma <i at introo.me> wrote:
>
> Hi,
>
> When building an external module, for example, given this command,
> all:
> $(MAKE) -C $(KDIR) M=$$PWD
>
> It will build the ko file in the $PWD.
>
> How to specify a location for the .ko files?
>
>
> Regards.
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
> Perhaps KBUILD_EXTMOD is what you're looking for.
>
> /path/to/kernel/sources/Makefile:183,185
> # Use make M=dir to specify directory of external module to build
> # Old syntax make ... SUBDIRS=$PWD is still supported
> # Setting the environment variable KBUILD_EXTMOD take precedence

I haven't verified this, but perhaps KBUILD_OUTPUT would better server
your purposes.
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/kbuild/kbuild.txt?id=refs/tags/v4.10-rc2
KBUILD_OUTPUT
--------------------------------------------------
Specify the output directory when building the kernel.
The output directory can also be specified using "O=...".
Setting "O=..." takes precedence over KBUILD_OUTPUT.



More information about the Kernelnewbies mailing list