linux学习-编译内核

编译模块必须首先编译内核,生成模块编译过程中所需要的各种依赖文件,使用的系统是最新的ubuntu 16.04

编译内核首先得有内核的源代码,但是ubuntu默认安装是没有源代码的,需要自己安装

安装方法相当简单:sudo apt-get install  linux-source

执行完上述命令后,linux源代码后会被安装到/usr/src目录下

linux-source-4.4.0.tar.bz2包是内核的源码包

解包:tar -xvf  linux-source-4.4.0.tar.bz2

成的linux源码目录结构:

root@home:/usr/src/linux-source-4.4.0/linux-source-4.4.0# ls -al
总用量 1655292
drwxrwxr-x  28 root root      4096 9月  13 22:39 .
drwxr-xr-x   5 root root      4096 9月  12 22:45 ..
drwxr-xr-x  34 root root      4096 9月  13 22:39 arch
drwxr-xr-x   3 root root      4096 9月  13 22:39 block
drwxr-xr-x   2 root root      4096 9月  13 22:39 certs
-rw-r--r--   1 root root    189683 9月  12 22:51 .config
-rw-r--r--   1 root root    189683 9月  12 22:51 .config.old
-rw-r--r--   1 root root     18693 1月  11  2016 COPYING
-rw-r--r--   1 root root     97181 1月  11  2016 CREDITS
drwxr-xr-x   4 root root     24576 9月  13 22:40 crypto
drwxr-xr-x 112 root root     12288 8月  12 03:52 Documentation
drwxr-xr-x 128 root root      4096 9月  13 22:39 drivers
-rw-r--r--   1 root root       681 8月  12 02:01 dropped.txt
drwxr-xr-x  36 root root      4096 9月  13 22:50 firmware
drwxr-xr-x  74 root root     12288 9月  13 22:48 fs
drwxr-xr-x  30 root root      4096 9月  12 22:03 include
drwxr-xr-x   2 root root      4096 9月  13 22:39 init
drwxr-xr-x   2 root root      4096 9月  13 22:39 ipc
-rw-r--r--   1 root root      2622 1月  11  2016 Kbuild
-rw-r--r--   1 root root       252 1月  11  2016 Kconfig
drwxr-xr-x  16 root root     12288 9月  13 22:48 kernel
drwxr-xr-x  12 root root     24576 9月  13 22:48 lib
-rw-r--r--   1 root root    338882 8月  12 02:01 MAINTAINERS
-rw-r--r--   1 root root     55578 8月  12 02:01 Makefile
-rw-r--r--   1 root root       485 9月  13 22:34 .missing-syscalls.d
drwxr-xr-x   3 root root     12288 9月  13 22:48 mm
-rw-r--r--   1 root root      6969 9月  13 22:39 modules.builtin
-rw-r--r--   1 root root    181223 9月  13 22:39 modules.order
-rw-r--r--   1 root root   1217024 9月  13 22:40 Module.symvers
drwxr-xr-x  60 root root      4096 9月  13 22:39 net
-rw-r--r--   1 root root     18599 1月  11  2016 README
-rw-r--r--   1 root root      7485 1月  11  2016 REPORTING-BUGS
drwxr-xr-x  16 root root      4096 8月  12 03:52 samples
drwxr-xr-x  13 root root      4096 9月  12 22:53 scripts
drwxr-xr-x   9 root root      4096 9月  13 22:39 security
-rw-r--r--   1 root root       467 8月  12 02:01 snapcraft.yaml
drwxr-xr-x  23 root root      4096 9月  13 22:50 sound
drwxr-xr-x  10 root root      4096 8月  12 03:51 spl
-rw-r--r--   1 root root   3861122 9月  13 22:39 System.map
-rw-r--r--   1 root root   4140208 9月  13 22:38 .tmp_kallsyms1.o
-rw-r--r--   1 root root   4140208 9月  13 22:38 .tmp_kallsyms2.o
-rw-r--r--   1 root root   3861122 9月  13 22:39 .tmp_System.map
drwxr-xr-x   2 root root    155648 9月  13 22:38 .tmp_versions
-rwxr-xr-x   1 root root 404628824 9月  13 22:38 .tmp_vmlinux1
-rwxr-xr-x   1 root root 408965056 9月  13 22:38 .tmp_vmlinux2
drwxr-xr-x  23 root root      4096 8月  12 03:51 tools
drwxr-xr-x   7 root root      4096 9月  13 22:39 ubuntu
drwxr-xr-x   2 root root      4096 9月  13 22:39 usr
-rw-r--r--   1 root root         2 9月  13 22:38 .version
drwxr-xr-x   4 root root      4096 9月  13 22:39 virt
-rwxr-xr-x   1 root root 408965056 9月  13 22:39 vmlinux
-rw-r--r--   1 root root        91 9月  13 22:39 .vmlinux.cmd
lrwxrwxrwx   1 root root        73 9月  13 22:38 vmlinux-gdb.py -> /usr/src/linux-source-4.4.0/linux-source-4.4.0/scripts/gdb/vmlinux-gdb.py
-rw-r--r--   1 root root 472328760 9月  13 22:38 vmlinux.o
drwxr-xr-x  13 root root      4096 8月  12 03:52 zfs

可以看到Makefile文件,执行make menuconfig进入图形化界面进行配置,然后……报错了……

sean@home:/usr/src/linux-source-4.4.0/linux-source-4.4.0$make menuconfig

HOSTCC  scripts/kconfig/lxdialog/checklist.o

In file included from scripts/kconfig/lxdialog/checklist.c:24:0:

scripts/kconfig/lxdialog/dialog.h:31:20: fatal error: curses.h: 没有那个文件或目录

compilation terminated.
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 1
make[1]: *** [menuconfig] 错误 2
make: *** [menuconfig] 错误 2
尝试直接执行make config在字符界面进行配置是可以运行的,所以源代码应该十没有错误的,从报错信息可以看出,应该是缺少 curses库的支持,这个库的功能是提供字符终端处理库,包括面板和菜单等,这也解释了为什么menuconfig不能执行而config可以执行。

安装curses库:sudo apt-get install libncurses5-dev

再次执行make menuconfig,然后……又报错了……

scripts/sign-file.c:23:30: fatal error: openssl/opensslv.h: 没有那个文件或目录

有了上边的经验,直接开始安装openssl库:sudo apt-get install libssl-dev

然后再再次执行make menuconfig,终于出现了图形化配置界面

根据需求或者一路确定完成配置,可以在/usr/src/linux-source-4.4.0/linux-source-4.4.0目录下生成了config文件(隐藏文件)

然后执行make命令(可以根据不同需求,使用不同参数,生成不同的内核文件),开始漫长的等待……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值