Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
2e99f319
Commit
2e99f319
authored
Sep 21, 2006
by
Robert P. J. Day
Committed by
Sam Ravnborg
Sep 25, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kbuild: fixup Documentation/kbuild/modules.txt
Signed-off-by:
Sam Ravnborg
<
sam@ravnborg.org
>
parent
da7c0408
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
23 deletions
+23
-23
Documentation/kbuild/modules.txt
Documentation/kbuild/modules.txt
+23
-23
No files found.
Documentation/kbuild/modules.txt
View file @
2e99f319
...
@@ -24,7 +24,7 @@ In this document you will find information about:
...
@@ -24,7 +24,7 @@ In this document you will find information about:
--- 6.1 INSTALL_MOD_PATH
--- 6.1 INSTALL_MOD_PATH
--- 6.2 INSTALL_MOD_DIR
--- 6.2 INSTALL_MOD_DIR
=== 7. Module versioning & Module.symvers
=== 7. Module versioning & Module.symvers
--- 7.1 Symbols fro
n
the kernel (vmlinux + modules)
--- 7.1 Symbols fro
m
the kernel (vmlinux + modules)
--- 7.2 Symbols and external modules
--- 7.2 Symbols and external modules
--- 7.3 Symbols from another external module
--- 7.3 Symbols from another external module
=== 8. Tips & Tricks
=== 8. Tips & Tricks
...
@@ -63,14 +63,15 @@ when building an external module.
...
@@ -63,14 +63,15 @@ when building an external module.
For the running kernel use:
For the running kernel use:
make -C /lib/modules/`uname -r`/build M=`pwd`
make -C /lib/modules/`uname -r`/build M=`pwd`
For the above command to succeed
the kernel must have been built with
For the above command to succeed
, the kernel must have been
modules enabled.
built with
modules enabled.
To install the modules that were just built:
To install the modules that were just built:
make -C <path-to-kernel> M=`pwd` modules_install
make -C <path-to-kernel> M=`pwd` modules_install
More complex examples later, the above should get you going.
More complex examples will be shown later, the above should
be enough to get you started.
--- 2.2 Available targets
--- 2.2 Available targets
...
@@ -89,13 +90,13 @@ when building an external module.
...
@@ -89,13 +90,13 @@ when building an external module.
Same functionality as if no target was specified.
Same functionality as if no target was specified.
See description above.
See description above.
make -C $KDIR M=
$PWD
modules_install
make -C $KDIR M=
`pwd`
modules_install
Install the external module(s).
Install the external module(s).
Installation default is in /lib/modules/<kernel-version>/extra,
Installation default is in /lib/modules/<kernel-version>/extra,
but may be prefixed with INSTALL_MOD_PATH - see separate
but may be prefixed with INSTALL_MOD_PATH - see separate
chapter.
chapter.
make -C $KDIR M=
$PWD
clean
make -C $KDIR M=
`pwd`
clean
Remove all generated files for the module - the kernel
Remove all generated files for the module - the kernel
source directory is not modified.
source directory is not modified.
...
@@ -129,23 +130,22 @@ when building an external module.
...
@@ -129,23 +130,22 @@ when building an external module.
To make sure the kernel contains the information required to
To make sure the kernel contains the information required to
build external modules the target 'modules_prepare' must be used.
build external modules the target 'modules_prepare' must be used.
'module_prepare'
solely exists
as a simple way to prepare
'module_prepare'
exists solely
as a simple way to prepare
a kernel for building external modules.
a kernel
source tree
for building external modules.
Note: modules_prepare will not build Module.symvers even if
Note: modules_prepare will not build Module.symvers even if
CONFIG_MODULEVERSIONING is set.
CONFIG_MODULEVERSIONING is set. Therefore a full kernel build
Therefore a full kernel build needs to be executed to make
needs to be executed to make module versioning work.
module versioning work.
--- 2.5 Building separate files for a module
--- 2.5 Building separate files for a module
It is possible to build single files which are part of a module.
It is possible to build single files which are part of a module.
This works equal
for the kernel, a module and even for external
This works equal
ly well for the kernel, a module and even for
modules.
external
modules.
Examples (module foo.ko, consist of bar.o, baz.o):
Examples (module foo.ko, consist of bar.o, baz.o):
make -C $KDIR M=`pwd` bar.lst
make -C $KDIR M=`pwd` bar.lst
make -C $KDIR M=`pwd` bar.o
make -C $KDIR M=`pwd` bar.o
make -C $KDIR M=`pwd` foo.ko
make -C $KDIR M=`pwd` foo.ko
make -C $KDIR M=`pwd` /
make -C $KDIR M=`pwd` /
=== 3. Example commands
=== 3. Example commands
...
@@ -177,7 +177,7 @@ Then, to install the module use the following command:
...
@@ -177,7 +177,7 @@ Then, to install the module use the following command:
M=`pwd` \
M=`pwd` \
modules_install
modules_install
If
one looks closely you will see that this is the same commands
as
If
you look closely you will see that this is the same command
as
listed before - with the directories spelled out.
listed before - with the directories spelled out.
The above are rather long commands, and the following chapter
The above are rather long commands, and the following chapter
...
@@ -311,7 +311,7 @@ following files:
...
@@ -311,7 +311,7 @@ following files:
Include files are a necessity when a .c file uses something from other .c
Include files are a necessity when a .c file uses something from other .c
files (not strictly in the sense of C, but if good programming practice is
files (not strictly in the sense of C, but if good programming practice is
used). Any module that consists of more than one .c file will have a .h file
used). Any module that consists of more than one .c file will have a .h file
for one of the .c files.
for one of the .c files.
- If the .h file only describes a module internal interface, then the .h file
- If the .h file only describes a module internal interface, then the .h file
shall be placed in the same directory as the .c files.
shall be placed in the same directory as the .c files.
...
@@ -368,13 +368,13 @@ directory and therefore need to deal with this in their kbuild file.
...
@@ -368,13 +368,13 @@ directory and therefore need to deal with this in their kbuild file.
handle this too.
handle this too.
Consider the following example:
Consider the following example:
|
|
+- src/complex_main.c
+- src/complex_main.c
| +- hal/hardwareif.c
| +- hal/hardwareif.c
| +- hal/include/hardwareif.h
| +- hal/include/hardwareif.h
+- include/complex.h
+- include/complex.h
To build a single module named complex.ko, we then need the following
To build a single module named complex.ko, we then need the following
kbuild file:
kbuild file:
...
@@ -462,12 +462,12 @@ Module.symvers contains a list of all exported symbols from a kernel build.
...
@@ -462,12 +462,12 @@ Module.symvers contains a list of all exported symbols from a kernel build.
Sample:
Sample:
0x2d036834 scsi_remove_host drivers/scsi/scsi_mod
0x2d036834 scsi_remove_host drivers/scsi/scsi_mod
For a kernel build without CONFIG_MODVERSION
ING
enabled, the crc
For a kernel build without CONFIG_MODVERSION
S
enabled, the crc
would read: 0x00000000
would read: 0x00000000
Module.symvers serves two purposes:
Module.symvers serves two purposes:
1) It lists all exported symbols both from vmlinux and all modules
1) It lists all exported symbols both from vmlinux and all modules
2) It lists the CRC if CONFIG_MODVERSION is enabled
2) It lists the CRC if CONFIG_MODVERSION
S
is enabled
--- 7.2 Symbols and external modules
--- 7.2 Symbols and external modules
...
@@ -479,7 +479,7 @@ Module.symvers contains a list of all exported symbols from a kernel build.
...
@@ -479,7 +479,7 @@ Module.symvers contains a list of all exported symbols from a kernel build.
the external module is being built, this file will be read too.
the external module is being built, this file will be read too.
During the MODPOST step, a new Module.symvers file will be written
During the MODPOST step, a new Module.symvers file will be written
containing all exported symbols that were not defined in the kernel.
containing all exported symbols that were not defined in the kernel.
--- 7.3 Symbols from another external module
--- 7.3 Symbols from another external module
Sometimes, an external module uses exported symbols from another
Sometimes, an external module uses exported symbols from another
...
@@ -499,7 +499,7 @@ Module.symvers contains a list of all exported symbols from a kernel build.
...
@@ -499,7 +499,7 @@ Module.symvers contains a list of all exported symbols from a kernel build.
./foo/ <= contains the foo module
./foo/ <= contains the foo module
./bar/ <= contains the bar module
./bar/ <= contains the bar module
The top-level Kbuild file would then look like:
The top-level Kbuild file would then look like:
#./Kbuild: (this file may also be named Makefile)
#./Kbuild: (this file may also be named Makefile)
obj-y := foo/ bar/
obj-y := foo/ bar/
...
@@ -521,7 +521,7 @@ Module.symvers contains a list of all exported symbols from a kernel build.
...
@@ -521,7 +521,7 @@ Module.symvers contains a list of all exported symbols from a kernel build.
build is finished, a new Module.symvers file is created
build is finished, a new Module.symvers file is created
containing the sum of all symbols defined and not part of the
containing the sum of all symbols defined and not part of the
kernel.
kernel.
=== 8. Tips & Tricks
=== 8. Tips & Tricks
--- 8.1 Testing for CONFIG_FOO_BAR
--- 8.1 Testing for CONFIG_FOO_BAR
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment