导航:首页 > 编程知识 > 内核编程需要什么

内核编程需要什么

发布时间:2023-07-12 17:27:33

① 什么是linux内核编程

真佩服楼上的2位对“内核编程”的理解力!
简单说,Linux内核编程就是开发Linux驱动专程序,学会内核编程后,属将会对操作系统的内部机制和工作原理有充分了解,可以从事硬件驱动开发、嵌入式系统开发等。内核编程的语言仍是传统的C语言,但其编写方法和调用接口与传统应用程序的差别较大,你必须了解如何处理中断、如何在内核态和用户态之间转换、PCI、DMA、内核地址映射、内核I/O等,这不是《UNIX高级编程》所涉及的内容,可以找一本专门讲Linux驱动编程的书看看,或在网上搜寻相关资料(关键词:Linux DDK)。不过先提醒一句,学习内核编程的难度很大,必须做好长期心理准备

② 在Ubuntu上做内核编程,要安装哪个包怎么做

1、gcc (C编译器)
安装 apt-get install gcc

2、make (源代码维护工具,它能自动检测出需要重新编译的源文件并根据你设定的编译规则去重新编译程序)
安装 apt-get install make

3.kernel-source (内核源码包。你可以apt-cache search kernel-source搜索到内核源代码包,并用uname -r命令查看到当前系统内核版本,然后用apt-get install kernel-source-xxxx来安装和你内核版本一致的内核源代码包)
如果你不想重新编译内核,内核源代码包kernel-source是完全可以不下载的。

4.kernel-headers(内核源代码头文件包,不管你是要进行内核模块开发还是进行驱动程序开发,这个包都是必须 要安装的。因为作为一个内核模块编写者,通常会调用内核里的一些东西,比如内核头文件,内核数据结构申明等。它里面包含了一些关键的内核头文件)
安装 apt-cache search kernel-headers
uname -r
apt-get instakk kernel-headers-xxxx

5.kernel-kbuild(用来编译内核模块的,下载安装这个包后会发现在/usr/src目录下多了一个kernel-kbuild-xxxx开头的目录,下面只有scripts一个目录,这是用来编译内核模块的一些脚本程序)
安装 apt-cache search kernel-kbuild
uname -r
apt-get install kernel-kbuild-xxxx

6.build-essential(包含一个在建立deb包过程中起关键作用的包的信息列表,如果你不想建立deb包你就不需要安装此表)
安装 apt-get install build-essential

7.kernel-package(如果你想把内核镜像做成一个deb包来用,那么必须用安装这个包了)
安装 apt-get install kernel-package

8.initrd-tools(如果你想制作启动过程的initrd镜像,则这个包是必不可少的)
安装 apt-get instakk initrd-tools

假设你编写了一个内核模块程序,源代码如下:
/* hello.c */
#include <linux/init.h>
#include <linux/mole.h>
#include <linux/kernel.h>
static int hello_init(void)
{
printk(KERN_ALERT "Hello, linux kernel mole
");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, I've created a linux kernel mole sucessfully
");
}
mole_init(hello_init);
mole_exit(hello_exit);
MODULE_LICENSE("GPL");

你需要这此源程序编写一个makefile,内容如下:

#Makefile for hello.c file
#
KERNEL_DIR:=/usr/src/linux
obj-m:=hello.o
default:
$(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) moles
clean:
$(RM) .*.cmd *.mod.c *.o *.ko -r .tmp
注意:这里的KERNEL_DIR是指内核源代码头文件所在目录的上一级目录,通常就是指内核源代码目录。该目录一般包括有arch,drivers,fs,include,init,ipc,kernel,lib,mm,net,scripts,usr,sound,security等目录。

在本示例中,/usr/src/linux是一个链接,指向了/usr/src/kernel-headers-2.6.8-3目录。

编写好makefile后就可以输入make命令生成hello.ko内核模块了,然后你可以用:

insmode hello.ko
命令来加入内核模块,然后用:

rmmod hello
来删除内核模块。

③ 学习Linux内核编程都需要什么基础。

LINUX有很多方向 软件开发 桌面应用 服务器应用等。
C语言好的可以从事软件开发内,如嵌入容式开发,驱动开发。
没有一本书能够全面的把LINUX全部讲透。
入门的话建议看 鸟哥的私房菜 ,对LINUX有一个大致的了解以后在从自己感兴趣的方向发展

这是鸟哥的网站http://linux.vbird.org/ 鸟哥偏重服务器应用

④ 我 想定制一下linux内核,只要满足c\c++编程和练习命令,不需要桌面,我该学习哪些知识

要练习编程和命令,跟定制内核无关。
linux下编程的话你内要学c和makefile,练习命令的话你网上找本shell编程的书,多容实践很快能学好。
使用任意一款linux发行版就可以,有桌面的更方便使用,能加快学习进度,祝你成功。

阅读全文

与内核编程需要什么相关的资料

热点内容
王者什么时候版本更新 浏览:123
win10桌面图标太小乱跑 浏览:73
写公文时保密数据如何反映 浏览:767
arch设置ip配置文件 浏览:641
烧杯APP中的气体和液体在哪里 浏览:3
找同行工作在哪个网站 浏览:254
linuxdirfd 浏览:290
电脑打印一张文件多少钱 浏览:212
斗战神游戏修复工具 浏览:736
系统更新网络无法链接不上电脑没反应 浏览:851
什么是二层网络架构 浏览:402
中医看书好的app 浏览:516
win10纸牌变成英文 浏览:135
源码文件图片路径怎么形成的 浏览:432
ai变量宽度配置文件点不了 浏览:460
强制安装app去哪里举报 浏览:719
微信登录数据保存在哪里 浏览:321
pic编程哪里下载 浏览:549
苹果ipad官方壁纸 浏览:154
华创网络信号怎么样 浏览:495

友情链接