linux内核编译和生成makefile文件实验报告

linux内核编译和生成makefile文件实验报告
linux内核编译和生成makefile文件实验报告

操作系统实验报告

姓名:学号:

一、实验题目

1.编译linux内核

2.使用autoconf和automake工具为project工程自动生成Makefile,并测试

3.在内核中添加一个模块

二、实验目的

1.了解一些命令提示符,也里了解一些linux系统的操作。

2.练习使用autoconf和automake工具自动生成Makefile,使同学们了解Makefile的生成原理,熟悉linux编程开发环境

三、实验要求

1使用静态库编译链接swap.c,同时使用动态库编译链接myadd.c。可运行程序生成在src/main目录下。

2要求独立完成,按时提交

四、设计思路和流程图(如:包括主要数据结构及其说明、测试数据的设计及测试结果分析)

1.Makefile的流程图:

2.内核的编译基本操作

1.在ubuntu环境下获取内核源码

2.解压内核源码用命令符:tar xvf linux-

3.18.12.tar.xz

3.配置内核特性:make allnoconfig

4.编译内核:make

5.安装内核:make install

6.测试:cat/boot/grub/grub.conf

7.重启系统:sudo reboot,看是否成功的安装上了内核

8.详情及结构见附录

3.生成makefile文件:

1.用老师给的projec里的main.c函数。

2.需要使用automake和autoconf两个工具,所以用命令符:sudo apt-get install autoconf 进行安装。

3.进入主函数所在目录执行命令:autoscan,这时会在目录下生成两个文件 autoscan.log和configure.scan,将configure.Scan改名为configure.ac,同时用gedit打开,打开后文件修改后的如下:

# -*- Autoconf -*-

# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])

AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

AC_CONFIG_SRCDIR([main.c])

AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE(main,1.0)

# Checks for programs.

AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT(Makefile)

4.新建Makefile文件,如下:

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=main

first_SOURCES=main.c

5.运行命令aclocal

命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。

6.运行命令autoheader

命令成功之后,会在目录下产生config.h.in这个新文件。

7.运行命令autoconf

命令成功之后,会在目录下产生configure这个新文件。

8.运行命令automake --add-missing输出结果为:

Configure.ac:11:installing./compile’

Configure.ac:8:installing ‘.install-sh’

Configure.ac:8:installing ‘./missing’

Makefile.am:installing ‘./decomp’

9. 命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。

10.运行命令./configure就可以自动生成Makefile。

4.添加内核模块

1.写一个c文件如下:

#include

#include

MODULE_LICENSE("GPL");

int __init hello_init (void)

{

printk("Hello xuxuemei\n");

printk("Hello xuxuemei\n");

printk("Hello xuxuemei\n");

return 0;

}

void __exit hello_exit (void)

{

printk("Hello linux exit\n");

printk("Byebye xuxuemei\n");

}

module_init(hello_init);

module_exit(hello_exit);

2输入 sudo make –C /lilb/modules/$(uname -r)/build M=$(pwd)命令符,生成hello.ko等文件

3.输入命令符:sudo insmod ./hello.ko,加入模块

4.输入命令符:Sudo rmmod hello,删除模块

5输入命令符:tail/var/log/kern.log,查看模块添加情况,如果c文件里的输出都能正常输出的话,说明添加成功。

五、实验体会(如:包括实验中遇到的问题及解决过程、产生的错误及原因分析)

1.在试验中遇到了好多问问题,光ubuntu就装了3遍,其中有一次是编译完内核之后再重启ububtu然后就重启不了了,然后把它卸了重装,重装之后发现又不能联网,然后又重装一遍,发现才可以用。

2.编译内核的过程中,出现了好多问题,下载内核的过程中下载了好几次才下载成功,我一共编译

3.19.,3.18,3.14 这些版本的内核,但是3.19版本的编译时出了错误,也不知道要怎么修改,所以就放弃了,然后编译3.18版本的,编译完成后发现安装不了,然后又编译了3.14,但是配置内核特性的时候又出现了问题。最后又重新编译了3.18,最后才正确。3.在生成makefile的过程中,也出现了一些问题,首先就是没有生成alocal.m4文件,然后到最后我才发现原来是那个第一次生成的文件configure.ac需要修改,修改之后就对了。

4.在添加内核模块时也出现了错误,只是那些错误是命令符输入错误的问题。

六、程序清单(如:包括源程序、makefile、readme)

见上面。

七.图片(见附录)

附录:

1.编译内核:

2.生成makefile的结果:

3.添加内核模块

Linux内核修改与编译图文教程

Linux 内核修改与编译图文教程 1

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.360docs.net/doc/1312371335.html,/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2

3.2 下载最新内核 我这里使用的内核版本是 3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3

使用命令: ln -s linux-2.6.36 linux 在终端下输入一下命令: sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4

数据的基本统计与非参数检验

北京建筑大学 理学院信息与计算科学专业实验报告 课程名称《数据分析》实验名称数据的基本统计与非参数检验实验地点基C-423 日期2016 . 3 .17 姓名班级学号指导教师成绩 【实验目的】 (1)熟悉数据的基本统计与非参数检验分析方法; (2)熟悉撰写数据分析报告的方法; (3)熟悉常用的数据分析软件SPSS。 【实验要求】 根据各个题目的具体要求,完成实验报告 【实验内容】 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分别对数据的“家庭收入”、“现住面积”,进行数据的基本统计量分析,撰写相应的分析报告; 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分别分析不同学历对家庭收入、现住面积是否有显著影响,撰写相应的分析报告。 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分析家庭收入与10000元是否有显著差异,撰写相应的分析报告。 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分析婚姻状况对家现住面积是否有显著影响,撰写相应的分析报告。 根据附件“减肥茶数据”给出的相关数据,请选用恰当的分析方法,分析该减肥茶对减肥是否有显著影响,撰写相应的分析报告。 【分析报告】 1. 表一家庭收入和现住面积的基本描述统计量 家庭收入现住面积 N 有效2993 2993 缺失0 0 均值17696.1567 62.7241

均值的标准误279.64310 .47349 中值15000.0000 60.0000 众数10000.00 60.00 标准差15298.80341 25.90383 方差 2.341E8 671.008 偏度 5.546 .910 偏度的标准误.045 .045 峰度55.425 3.078 峰度的标准误.089 .089 百分位数25 10000.0000 45.0000 50 15000.0000 60.0000 75 20000.0000 80.0000 表一说明, 家庭收入方面: 被调查者中家庭收入的均值为17696.16元,中值为15000元,普遍收入为10000元; 家庭收入的标准差和方差都相对较大,所以,各家庭收入之间有明显的差异; 偏度大于零,说明右偏;峰度大于零,说明数据呈尖峰分布; 由家庭收入的四分位数可知,25%的家庭,收入在10000以下,有50%的家庭,收入在15000以下,有75%的家庭,收入在20000以下; 现住面积方面: 被调查者中现住面积的均值为62.724平方米,中值为60平方米,普遍面积为60平方米; 现住面积的标准差和方差都相对较大,所以,各家庭现住面积之间有明显的差异; 偏度近似等于零,说明现住面积数据对称分布;峰度大于零,说明现住面积数据为尖峰分布; 由现住面积的四分位数可知,25%的家庭,现住面积为45平方米以下,有50%的家庭,现住面积在60平方米以下,有75%的家庭,现住面积在80平方米以下。 图一:家庭收入直方图 该图表明,家庭收入分布存在一定的右偏。 图二:现住面积直方图

实验教学模式

2006年9月浙江省全面实施新课程,综观高中物理新教材,关于实验内容及方式方法有许多新的改变和拓展,本文就新课程下如何构建高中物理实验教学模式作以探索。 1新课程加强了实验教学,提升了实验教学地位 物理实验在物理教学中占有重要的地位,它既是物理教学的基础,也是物理教学的内容、方法、手段,在新课程标准的物理教学中倡导学生自主学习、研究性学习,加强科学探究,《课程标准》第三部分专门列入一项——科学探究及物理实验能力要求,列表说明探究要素和基本要求,所以实验在物理教学中的地位不但没有削弱,还大大加强了,因为实验既能为学生的自主学习、科学探究打下基础,又能为学生的自主学习、科学探究提供物质的保证,在学生智能结构的发展中占有重要的地位。实验在新课程中笔者认为有3个特点: 1)实验与其他教学内容紧密结合,不再规定“必做”实验。凡是《课程标准》要求“通过实验”教学的内容都安排了实验;将原来实验中的演示实验和学生实验融合在内容标准之中,使它们成为有机的整体,不再单独列出。 2)实验内容明显增多,有示范性实验、探究性实验、演示实验、分组实验、“做一做”小实验,另外还设计了以实验为背景的“问题与练习”、“课题研究”栏目,而且学生分组实验和探究性实验完全安排在课堂教学中进行,进一步确立了物理知识体系与实验的依赖关系,凸显实验教学的重要,真正做到还给学生实验探索空间,由静态变为动态,由独立变为合作,由观察者变为探索者,由单纯动脑变为手脑并用,调动学生实验的积极性。 3)新教材没有对实验的具体做法、使用的器材等做硬性的规定,这样便于因地制宜开展实验教学,便于提出不同实验方法,有利于实验设计,使师生更注重实验的科学思想,而不是记忆实验器材、步骤等条文,不过分强调实验数据的精确和操作技能,而是更注重实验设计,因为实验设计的思想更能提高学生的心智技能。 物理课程标准的理念改变了物理实验教学的目标、性质和模式,从单纯为了学习知识验证理论及学习操作技能,转变为以全面地培养学生科学素养为目标的课程,实验教学对于实现“知识与技能、过程与方法、情感态度与价值观”三维教学目标有独到作用。 2学生所需的实验教学 以往的高中物理实验教学在实现上述重要的教学功能上存在诸多问题,其中一个问题就是缺乏对学习的主体——学生的实验心理需求的研究。也就是说,教师往往根据教学和应试的要求,少有考虑到学生对实验的喜好与厌恶的心理需求,来安排实验教学。以至于在高中物理实验教学中充斥着他主性的、机械的、乏味的、缺少探究性的教学范式。课题组认为,要有效发挥物理实验在“知识与技能、过程与方法、情感态度与价值观”等方面的教学功能,实验教学应当研究学生的心理需求。笔者和同事10月中旬对1所重点中

如何自行编译一个Linux内核的详细资料概述

如何自行编译一个Linux内核的详细资料概述 曾经有一段时间,升级Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像 apt 这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核(比如针对音频产品的实时内核)。 考虑一下,既然升级内核如此容易,为什么你不愿意自行编译一个呢?这里列举一些可能的原因: 你想要简单了解编译内核的过程 你需要启用或者禁用内核中特定的选项,因为它们没有出现在标准选项里 你想要启用标准内核中可能没有添加的硬件支持 你使用的发行版需要你编译内核 你是一个学生,而编译内核是你的任务 不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的Linux 内核(那是很久以前了),然后尝试从它启动,我从中(系统马上就崩溃了,然后不断地尝试和失败)感受到一种特定的兴奋。 既然这样,让我们来实验一下编译内核的过程。我将使用Ubuntu 16.04 Server 来进行演示。在运行了一次常规的 sudo apt upgrade 之后,当前安装的内核版本是 4.4.0-121。我想要升级内核版本到 4.17,让我们小心地开始吧。 有一个警告:强烈建议你在虚拟机里实验这个过程。基于虚拟机,你总能创建一个快照,然后轻松地从任何问题中回退出来。不要在产品机器上使用这种方式升级内核,除非你知道你在做什么。 下载内核 我们要做的第一件事是下载内核源码。在 Kernel 找到你要下载的所需内核的URL。找到URL 之后,使用如下命令(我以 4.17 RC2 内核为例)来下载源码文件: wget https://git.kernel/torvalds/t/linux-4.17-rc2.tar.gz

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.360docs.net/doc/1312371335.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

探析开放性实验教学模式

探析开放性实验教学模式 我们国家非常的重视开放性实验教学的模式,这种教学的模式当前正在被广泛的使用,因为当前我们国家的以一些教育的机构非常重视人才资源的提供,国家的发展需要人才,我们国家现在的发展逐渐的变慢,因为在迅猛的发展当中严重的破坏了环境和污染了自然的资源,造成了当前的严峻形势,因此,想要实现和谐社会的构建,实现可持续发展,必须要努力的为国家提供大量的优秀人才,不断的出谋划策,能够解决国家当前的危机,使得国家发展的更加迅速。 标签:开放性;实验;教学;模式;研究分析 1.前言 我们国家的发展水平正在逐渐的提高,但是相对于发达国家来说,我们国家的发展存在较多的问题,因为国家的发展起步非常的晚,经济实力也不够,中国的人口数量还是非常的多,这些问题的存在导致国家在不断的发展当中逐渐的显现出一些问题,因此,为了能够提高我们国家的经济实力,使得各个行业都能够稳定的增长,解决存在的问题,必须要采取有效的教学方案,教学方案的实施效率直接的影响着我们国家的未来,所以,为了更好的未来,必须要提高教育建设。 2.开放性实验教学模式 实验教学在学生培养方面具有非常重要的作用,除了具有巩固验证理论知识或达到具体的研究目标的作用之外,还具有培养学生探索未知世界方法、勇气、创新能力和综合素质的作用。在传统实验教学中,从实验仪器准备到实验方法的确定,基本上都是由教师事先安排好,学生只是被动的接受和效仿,不利于调动学生创新积极性。传统的实验教学方式已不能满足目前多元化社会对学生动手能力、创新能力及竞争能力的需求。相对于传统的、封闭的实验教学,开放式实验是指实验时间、内容和教学方法等方面的开放,学生有自主选择权,它能为学生的主动学习和个性发展创造一个良好的外部环境,体现了以人为本的教学理念。实行全方位、多层次的开放式教学是实验教学改革的必然趋势和发展方向。开放式实验有助于激发学生的学习兴趣,培养学生发现问题、分析问题、解决问题的能力,对于学生综合素质的提高,创新意识和实践能力的培养极为重要。 关于开放式实验教学模式的研究可追溯到上世纪60年代,研究表明,开放式实验教学可以较好地培养学生的科研兴趣和综合素质,并可以提高本科生的合作能力、表达能力和解决问题的能力。近年来,开放式实验教学也引起了国内教育者的重视,众多高校都进行了尝试,根据学生知识结构的不同,开设综合性、创新性、设计性等不同层次的开放实验,取得了一定的效果,但却忽视了实验室管理模式的同步改革。 通过开放式实验教学的开展,树立了师生创新的教学理念和新的教学方法。该教学模式是根据大学生心理特点,运用教育学理论中的“读书指导法和发现

嵌入式Linux系统内核的配置、编译和烧写

实验二 嵌入式Linux系统内核的配置、编译和烧写 1.实验目的 1)掌握交叉编译的基本概念; 2)掌握配置和编译嵌入式Linux操作系统内核的方法; 3)掌握嵌入式系统的基本架构。 2.实验环境 1)装有Windows系统的计算机; 2)计算机上装有Linux虚拟机软件; 3)嵌入式系统实验箱及相关软硬件(各种线缆、交叉编译工具链等等)。 3.预备知识 1)嵌入式Linux内核的配置和裁剪方法; 2)交叉编译的基本概念及编译嵌入式Linux内核的方法; 3)嵌入式系统的基本架构。 4.实验内容和步骤 4.1 内核的配置和编译——配置内核的MMC支持 1)由于建立交叉编译器的过程很复杂,且涉及汇编等复杂的指令,在这里 我们提供一个制作好的编译器。建立好交叉编译器之后,我们需要完成 内核的编译,首先我们要有一个完整的Linux内核源文件包,目前流行 的源代码版本有Linux 2.4和Linux 2.6内核,我们使用的是Linux 2.6内核; 2)实验步骤: [1]以root用户登录Linux虚拟机,建立一个自己的工作路径(如用命令 “mkdir ‐p /home/user/build”建立工作路径,以下均采用工作路径 /home/user/build),然后将“cross‐3.3.2.tar.bz2、dma‐linux‐2.6.9.tar.gz、 dma‐rootfs.tar.gz”拷贝到工作路径中(利用Windows与虚拟机Linux 之间的共享目录作为中转),并进入工作目录; [2]解压cross‐3.3.2.tar.bz2到当前路径:“tar ‐jxvf cross‐3.3.2.tar.bz2”; [3]解压完成后,把刚刚解压后在当前路径下生成的“3.3.2”文件夹移 动到“/usr/local/arm/”路径下,如果在“/usr/local/”目录下没有“arm” 文件夹,用户创建即可; [4]解压“dma‐linux‐2.6.9.tar.gz”到当前路径下:

物理实验中的开放型教学模式

概述 大学物理实验作为一门基础而独立开设的课程,其目的要求在国家教委制定的有关基本要求中有充分阐述。我们体会其中最为强调的可归结为培养学生的能力、作风、素质 ?能力 这能力是多方面的,通过物理实验需要培养的是观察现象的能力、透过现象研究规律的能力,从复杂的现象中抽取相关信息的能力、运用知识解决实际问题的能力、根据仪器说明书能正确使用仪器的能力、从事现代化科学实验的能力等。 ?作风 这里主要应强调科学的工作作风,如实事求是的作风,严肃认真的作风以及坚韧不拔的工作作风等。而对于培养学生的团结协作精神、爱护国家财产等观念也是不容忽视的。 ?素质 这素质的内涵是指由实验方面的基本知识、基本方法和基本技能的水平,对现象观察和分析的能力,以及良好的实验习惯和科学作风等综合的表现。学生能力强素质会好,学生工作作风好,实验素质好,有利于实验良好习惯的培养,如认真阅读仪器说明书和参考资料的习惯,认真了解仪器的操作使用方法并遵守操作规程的习惯,认真、完整、如实地记录实验原始数据的习惯,在实验过程中积极思考、深入探讨、运用知识去解决问题的习惯等。 大学物理实验作为大学生进校后第一门科学实验课程,不仅应让学生受到严

格的、系统的实验技能训练,掌握科学实验的基本知识、方法和技巧,更重要的是要培养学生严谨的科学思维方式和创新精神,培养学生理论联系实际,分析和解决实际问题的能力,特别是应掌握与科学技术的发展相适应的综合能力。 ?任务艰巨,责任重 中国科学技术大学天文与应用物理系几十年来长期承担着全校大学物理实验的教学任务,每年上实验课的学生多达五千多人、二十八万人时以上 ?大学物理实验课程的弊端 ●教学模式单一 ●内容比较陈旧 ●命题实验较多 ●操作步骤刻板 ●课时限制 学生一遇到问题就立即问老师,很多老师往往也不是去启发、引导学生如何解决实验中存在的问题,而是一味地替学生排除问题,结果自然是学生只知道这样做了,但不知道为什么要这样做。 学习结果: 知其然,而不知其所以然。 大大抑制了学生的创新思维,一门非常有用且有趣的实践性课程反而让学生感到“枯燥无味”,甚至反感做物理实验。每次做实验纯粹是应付,测完数据立

linux内核编译和生成makefile文件实验报告

操作系统实验报告 姓名:学号: 一、实验题目 1.编译linux内核 2.使用autoconf和automake工具为project工程自动生成Makefile,并测试 3.在内核中添加一个模块 二、实验目的 1.了解一些命令提示符,也里了解一些linux系统的操作。 2.练习使用autoconf和automake工具自动生成Makefile,使同学们了解Makefile的生成原理,熟悉linux编程开发环境 三、实验要求 1使用静态库编译链接swap.c,同时使用动态库编译链接myadd.c。可运行程序生成在src/main目录下。 2要求独立完成,按时提交 四、设计思路和流程图(如:包括主要数据结构及其说明、测试数据的设计及测试结果分析) 1.Makefile的流程图: 2.内核的编译基本操作 1.在ubuntu环境下获取内核源码 2.解压内核源码用命令符:tar xvf linux- 3.18.12.tar.xz 3.配置内核特性:make allnoconfig 4.编译内核:make 5.安装内核:make install

6.测试:cat/boot/grub/grub.conf 7.重启系统:sudo reboot,看是否成功的安装上了内核 8.详情及结构见附录 3.生成makefile文件: 1.用老师给的projec里的main.c函数。 2.需要使用automake和autoconf两个工具,所以用命令符:sudo apt-get install autoconf 进行安装。 3.进入主函数所在目录执行命令:autoscan,这时会在目录下生成两个文件 autoscan.log和configure.scan,将configure.Scan改名为configure.ac,同时用gedit打开,打开后文件修改后的如下: # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE(main,1.0) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile) 4.新建Makefile文件,如下: AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=main first_SOURCES=main.c 5.运行命令aclocal 命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。 6.运行命令autoheader 命令成功之后,会在目录下产生config.h.in这个新文件。 7.运行命令autoconf 命令成功之后,会在目录下产生configure这个新文件。 8.运行命令automake --add-missing输出结果为: Configure.ac:11:installing./compile’ Configure.ac:8:installing ‘.install-sh’ Configure.ac:8:installing ‘./missing’ Makefile.am:installing ‘./decomp’ 9. 命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。 10.运行命令./configure就可以自动生成Makefile。 4.添加内核模块

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转) linux是如何组成的? 答:linux是由用户空间和内核空间组成的 为什么要划分用户空间和内核空间? 答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的 安全性,比如X86可以有4种模式RING0~RING3 RING0特权模式给LINUX内核空间RING3给用户空间 linux内核是如何组成的? 答:linux内核由SCI(System Call Interface)系统调用接口、PM(Process Management)进程管理、MM(Memory Management)内存管理、Arch、 VFS(Virtual File Systerm)虚拟文件系统、NS(Network Stack)网络协议栈、DD(Device Drivers)设备驱动 linux 内核源代码 linux内核源代码是如何组成或目录结构? 答:arc目录存放一些与CPU体系结构相关的代码其中第个CPU子目录以分解boot,mm,kerner等子目录 block目录部分块设备驱动代码 crypto目录加密、压缩、CRC校验算法 documentation 内核文档 drivers 设备驱动 fs 存放各种文件系统的实现代码 include 内核所需要的头文件。与平台无关的头文件入在include/linux子目录下,与平台相关的头文件则放在相应的子目录中 init 内核初始化代码 ipc 进程间通信的实现代码 kernel Linux大多数关键的核心功能者是在这个目录实现(程序调度,进程控制,模块化) lib 库文件代码 mm 与平台无关的内存管理,与平台相关的放在相应的arch/CPU目录net 各种网络协议的实现代码,注意而不是驱动 samples 内核编程的范例 scripts 配置内核的脚本 security SElinux的模块 sound 音频设备的驱动程序 usr cpip命令实现程序 virt 内核虚拟机 内核配置与编译 一、清除 make clean 删除编译文件但保留配置文件

linux 内核编译编译选项

1.Code maturity level options 代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,就必须把该项选择为Y了;否则可以把它选择为N。 2. Loadable module support 对模块的支持。这里面有三项: Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。 Set version inFORMation on all module symbols:可以不选它。 Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。 3. Processor type and features CPU类型。有关的几个如下: Processor family:根据你自己的情况选择CPU类型。 High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。 Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。 MTTR support:MTTR支持。可不选。 Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。 4. General setup 这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项: Networking support:网络支持。必须,没有网卡也建议你选上。 PCI support:PCI支持。如果使用了PCI的卡,当然必选。 PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any 吧。 Support for hot-pluggabel devices:热插拔设备支持。支持的不是太好,可不选。 PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必选了。System V IPC BSD Process Accounting Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V 和BSD两种风格。如果你不是使用BSD,就按照缺省吧。 Power Management support:电源管理支持。 Advanced Power Management BIOS support:高级电源管理BIOS支持。

配置和编译Linux内核

配置和编译Linux内核 对内核进行正确配置后,才能进行编译。配置不当的内核,很有可能编译出错,或者不能正确运行。 1.1.1 快速配置内核 进入Linux内核源码数顶层目录,输入make menuconfig命令,可进入如图0.1所示的基于Ncurses的Linux内核配置主界面(注意:主机须安装ncurses相关库才能正确运行该命令并出现配置界面)。如果没有在Makefile中指定ARCH,则须在命令行中指定: $ make ARCH=arm menuconfig 图0.1基于Ncurses的Linux内核配置主界面 基于Ncurses的Linux内核配置界面不支持鼠标操作,必须用键盘操作。基本操作方法: ?通过键盘的方向键移动光标,选中的子菜单或者菜单项高亮; ?按TAB键实现光标在菜单区和功能区切换; ?子菜单或者选项高亮,将光标移功能区选中