linux内核编译和生成makefile文件实验报告
- 格式:doc
- 大小:988.00 KB
- 文档页数:8
实验一嵌入式 Linux 开发环境的搭建及 Makefile 应用一、实验目的:1.熟悉嵌入式 Linux 开发基本过程及基本命令。
2.了解嵌入式 Linux 开发中各种工具的基本用途。
3.搭建好嵌入式 Linux 的开发环境。
4.通过对包含多文件的 Makefile 的编写,熟悉各种形式的Makefile 编写,加深对 Makefile 中用户自定义变量、自动变量及预定义变量的理解。
二、实验内容:1.安装 Vmware 及 Ubuntu;2.熟悉 Linux 下相关命令:属性查询、修改,路径、目录的查询、修改、删除,压缩、解压等;3.熟悉编辑工具;4.熟悉 makefile 文件的基本作用(编写一个包含多文件的Makefile)。
三、Make 工程管理器:Makefile如今能得以广泛应用,这还得归功于它被包含在Unix系统中。
在make诞生之前,Unix系统的编译系统主要由“make”、“install”shell脚本程序和程序的源代码组成。
它可以把不同目标的命令组成一个文件,而且可以抽象化依赖关系的检查和存档。
这是向现代编译环境发展的重要一步。
1977年,斯图亚特·费尔德曼在1贝尔实验室里制作了这个软件。
2003年,斯图亚特·费尔德曼因发明了这样一个重要的工具而接受了美国计算机协会(ACM)颁发的软件系统奖。
Makefile文件是可以实现自动化编译,只需要一个“make”命令,整个工程就能完全自动编译,极大的提高了软件开发的效率。
目前虽有众多依赖关系检查工具,但是make是应用最广泛的一个。
一个程序员会不会写makefile,从一个侧面说明了这个程序员是否具备完成大型工程的能力。
1.Makefile 基本规则一个简单的 Makefile 语句由目标、依赖条件、指令组成。
smdk6400_config :unconfig@mkdir -p $(obj)include $(obj)board/samsung/smdk6400其中:smdk6400_config:目标;unconfig:先决条件;@mkdir -p $(obj)include $(obj)board/samsung/smdk6400:指令。
实验四内核裁减和编译一、实验目的1.了解和掌握内核源代码的目录结构;2.了解内核系统配置方式,了解Makefile和config.in脚本文件的作用;3.了解内核各项内容;4.熟悉make命令的使用。
二、实验环境预装redhat9.0(内核版本2.4.x)的PC机一台,XScale嵌入式实验箱一台(已构建嵌入式linux系统),以太网线一根,交叉编译工具链。
三、实验步骤①察看和了解Linux内核的目录及内容;②察看和了解Linux内核的Makefile文件及作用;③察看和了解Linux内核的config.in文件及作用;④使用menuconfig或xconfig察看内核编译选项及作用;⑤开关某些编译选项,自己裁剪一个Linux内核;A.[root @localhost ~]# cd XSBASE/xsbase/Kernel/2.4.18-rmk-pxal-XSBASE[root @localhost 2.4.18-rmk-pxal-XSBASE]# make menuconfigB.设置开发板上的鼠标不能操作。
进入Input Core device,然后敲空格键,取消屏幕上的鼠标操作。
退出时并保存。
C.[root @localhost 2.4.18-rmk-pxal-XSBASE]# make dep[root @localhost 2.4.18-rmk-pxal-XSBASE]# make zImage[root @localhost 2.4.18-rmk-pxal-XSBASE]# cd arch/arm/boot/[root @localhost 2.4.18-rmk-pxal-XSBASE]# cp zImage /tftpD.启动mini终端。
XSBase255> boot[root @XSBASE /root]$ tfp 192.168.0.77ftp>cd /ftp>get /tftp/zImageE.这个时候在重启板子一下,板子就不能执行触摸屏上的鼠标操作了。
编译linux实验报告
编译Linux实验报告
在计算机科学领域,Linux操作系统一直被广泛使用。
它是一个开放源代码的操作系统,具有稳定性和安全性。
在本次实验中,我们将学习如何编译Linux内核,并撰写实验报告以记录我们的实验过程和结果。
实验目的:
1. 了解Linux内核的编译过程
2. 熟悉编译工具和技术
3. 掌握编译过程中可能遇到的问题和解决方法
实验步骤:
1. 下载Linux内核源代码
2. 解压源代码并配置编译环境
3. 使用make命令编译内核
4. 安装编译后的内核
5. 测试新内核的稳定性和功能
实验结果:
经过一系列的操作,我们成功地编译了Linux内核,并将其安装到我们的计算机上。
新内核的稳定性和功能得到了验证,证明我们的编译过程是成功的。
实验总结:
通过本次实验,我们不仅了解了Linux内核的编译过程,还学习了如何使用编译工具和技术。
在实验过程中,我们遇到了一些问题,但通过查阅资料和尝试不同的解决方法,最终成功地完成了编译过程。
这次实验为我们提供了宝贵的
经验,也增强了我们对Linux操作系统的理解和掌握。
总的来说,编译Linux内核的实验是一次有意义的学习过程,我们通过实践提升了自己的技能和知识水平。
希望在未来的学习和工作中,能够运用这些经验和技能,为我们的计算机科学之路增添更多的成就和贡献。
实验二M akefile实验【实验目的】1、了解makefile的概念和构成。
2、会使用GNU make编译一个或者多个文件。
3、掌握Makefile文件的编写。
【实验条件】1、VMware虚拟机。
2、Redhat Linux平台。
【实验内容与步骤】1、使用命令编译程序在这里通过vi编译器来创建两个文件hello.c和makefile。
[hello.c]* test make file* Emdoor*#include "stdio.h"main(){printf( "wellcom emdoor!\n");}[makefile]# test for makefileCC = gccCFLAGS =all : hellohello: hello.o$(CC) $(CFLAGS) hello.o -o hellohello.o: hello.c$(CC) $(CFLAGS) -c hello.c -o hello.o clean:在将上述Makefile文件与源文件hello.c保存到同一目录之后,就可以在命令行中输入“make”命令来编译整个项目了。
make在执行过程中,首先会查找到Makefile文件第一条规则中的目标,即上述文件中的all。
根据设定好的规则,该目标需要依赖于hello。
由于all并不是一个已经存在的文件,所以每次在make被调用的时候,显然都需要先检查hello。
继续往下不难发现,hello目标是依赖于hello.o。
当make处理到目标hello.o时,会先查看其对应的依赖对象,这个以来对象是hello.c,此时就会对hello.c进行编译,得到目标文件hello.o,然后是目标文件hello.o被连接,得到可执行文件hello。
先后执行如下命令:可以看到输出结果:在Makefile中,并不是所有的目标都对应于磁盘上的文件。
有的目标存在只是为了形成一条规则,从而完成特定的工作,并不生成新的目标文件,这样的目标称为伪目标。
linux操作系统内核实验报告篇一:linux操作系统实验报告LINUX操作系统实验报告姓名班级学号指导教师XX 年 05月 16 日实验一在LINUX下获取帮助、Shell实用功能实验目的:1、掌握字符界面下关机及重启的命令。
2、掌握LINUX下获取帮助信息的命令:man、help。
3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替换与别名,管道及输入输出重定向。
实验内容:1、使用shutdown命令设定在30分钟之后关闭计算机。
2、使用命令“cat /etc/cron.daliy”设置为别名named,然后再取消别名。
3、使用echo命令和输出重定向创建文本文件/root/nn,内容是hello,然后再使用追加重定向输入内容为word。
4、使用管道方式分页显示/var目录下的内容。
5、使用cat显示文件/etc/passwd和/etc/shadow,只有正确显示第一个文件时才显示第二个文件。
实验步骤及结果:1. 用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入命令Shutdown -h 302、使用命令alias将/etc/cron.daliy文件设置为别名named,左边是要设置的名称右边是要更改的文件。
查看目录下的内容,只要在终端输入命令即可。
取消更改的名称用命令unalias命令:在命令后输入要取消的名称,再输入名称。
3.输入命令将文件内容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入内容为word。
步骤与输入内容HELLO一样,然后用命令显示文件的全部内容。
4.使用命令ls /etc显示/etc目录下的内容,命令是分页显示。
“|”是管道符号,它可以将多个命令输出信息当作某个命令的输入。
5实验二文件和目录操作命令实验目的:1、掌握LINUX下文件和目录的操作命令,如pwd、cd、ls、touch、mkdir、rmdir、cp、mv、rm等。
嵌入式实验报告:学号:学院:日期:实验一熟悉嵌入式系统开发环境一、实验目的熟悉Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。
使用Linux的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。
二、实验容本次实验使用Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。
创建一个新目录,并在其中编写hello.c 和Makefile 文件。
学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、实验设备及工具硬件::UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。
软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+AMR-LINUX 开发环境。
四、实验步骤1、建立工作目录[rootlocalhost root]# mkdir hello[rootlocalhost root]# cd hello2、编写程序源代码我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:[rootlocalhost hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令“:wq!”保存并退出。
这样我们便在当前目录下建立了一个名为hello.c的文件。
hello.c源程序:#include <stdio.h>int main() {char name[20];scanf(“%s”,name);printf(“hello %s”,name);return 0;}3、编写Makefile要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。
计算机科学系实验报告
课程名称Linux系统班级11软件2班实验名称grep、make命令及shell编程指导教师XXX
姓名123 学号123456 日期
一、实验目的
1.学习grep工具的使用, 能熟练使用grep进行文本搜索。
学习简单的正则表达式, 能在grep中使用正则表达式进行文本搜索。
二、学习make命令的使用, 能编写简单的Makefile文件。
三、 4. 学习shell编程,掌握的shell语法,能编写简单的shell脚本。
四、实验环境
Win7下vm虚拟机, Linux操作系统
五、实验内容
1.grep的使用
make命令的使用
shell编程
六、实验心得
对于这些命令, 一开始我很迷茫, 直到后面一个同学说直接在百度搜了linux命令大全, 我就去查, 没想到查起来这么方便, 很快就做好了。
***学生实验报告一、实验目的(1)学习重新编译Linux内核的方法(2)理解Linux标准内核和发行版本内核的区别。
二、实验内容在Linux系统中下载同一发行版本的版本号较高的内核,编译之后运行自己编译的内核,并使用uname-r命令查看是否运行成功。
由于不同版本的内核在编译过程中可能出现不同的问题,本书推荐的内核版本为4.16.10。
从第7章开始的进阶实验篇,都可以选用该版本的内核。
三、实验设备Vmware上运行的linux ubuntu 5.11.0-43-generic实验成功:linux ubuntu 4.18.0-generic(Ubuntu18.04均可)实验成功的方法在最后四、实验过程和原理分析一、实验(一)准备工作:在这里我建议用一个全新的虚拟机,避免编译错误对原来常使用的虚拟机造成不可逆的影响,安装好后就先安装gcc、make等工具首先下载好Linux***内核文件解压至/usr/src 目录下,如下:确认安装好gcc、make等工具,后可直接运行命令sudo make menuconfig进行查看内核功能是否需要编译,如果遇到如下错误可以运行命令sudo apt bison 或sudo apt-get install fiex bison命令解决错误:解决:(不建议)(强烈建议)除此之外还可以直接运行,上一条命令解决不了就用下面这个:sudo apt-get install --reinstall bison libbison-dev flex libfl-dev解决上述错误(强烈建议)运行完上述命令后再次输入sudo make menuconfig便正常进入如下:见到这个界面后无需任何多余操作,使用键盘方向键选择<Save>回车再回车即可此时.config文件生成成功.config文件是隐藏文件记得加参数-a此外还有一个方法就是用cp 命令从原有系统的内核复制.config文件过来也可以命令:sudo cp /boot/config- 5.11.0-43-generic ./.config(二)编译内核为了避免多线程编译时同时出现过多错误,我们这里一开始只使用单线程编译在这里除了用make编译还可以用make-kpkg等工具,个人比较喜欢用make-kpkg但课本用make所以我接下来的实验也先用make完成。
Linux驱动开发实验报告目录Linux驱动开发实验报告 (1)实验一、Linux内核移植实验 (3)1.1 资源 (3)1.2 解压源码包 (3)1.3 修改Makefile文件,支持交叉编译 (3)1.1 得到.config文件 (3)1.5 修改Nand Flash分区 (4)1.6 添加LCD支持 (5)1.7 添加网卡驱动 (6)1.8 添加YAFFS文件系统支持 (7)1.9 内核配置(即内核裁剪) (8)1.10 编译内核 (9)1.11 烧写内核 (10)实验二、ARM Norflash驱动实验 (10)2.1、环境 (10)2.2、目的 (11)2.3、实验步骤 (11)实验三、嵌入式linux驱动实验 (15)3.1、实验目的 (15)3.2、实验原理 (15)3.3、参考程序 (17)3.4、实验步骤 (25)3.5、实验结果 (30)3.6、实验体会 (30)实验四、LCD驱动实验 (30)4.1、实验目的 (30)4.2、实验设备(环境)及要求 (30)4.3、试验结果 (32)4.4、实验总结 (32)实验五、DM9000网卡驱动 (33)5.1、实验目的 (33)5.2、实验设备(环境)及要求 (33)5.3、实验内容与步骤 (33)5.4、试验结果 (35)5.5、实验总结 (35)实验一、Linux内核移植实验1.1 资源1.linux-2.6.24.1.tar.bz2 (Linux内核源码的压缩包,下载地址)2.yaffs2.tar.gz (yaffs文件系统源码的压缩包)3.dm9000.h和dm9000.c (dm9000网卡驱动程序)1.2 解压源码包1.在XP中,把“01/下午/src”文件夹拷贝到“//192.168.1.12”的共享文件夹uptech内,并把uptech中的“src”更名为“01 linux”2.在Linux虚拟机中进入该文件夹“cd /home/uptech/01 linux”ls可见1个文件:“linux-2.6.24.1.tar.bz2”、“yaffs2.tar.gz”、“dm9000.h”、“dm9000.c”◆bz2压缩包用“tar jxvf”解压◆gz压缩包用“tar zxvf”解压3.解压Linux源码压缩包,即输入命令“tar jxvf linux-2.6.21.1.tar.bz2”4.解压YAFFS源码压缩包,即输入命令“tar zxvf yaffs2.tar.gz”1.3 修改Makefile文件,支持交叉编译1.cd /home/uptech/01 linux/linux-2.6.21.2,该目录下就是linux的内核源码2.修改Makefile文件,使之支持交叉编译,也就是在Linux上编译出ARM开发板上运行的内核程序。
操作系统实验报告
姓名:学号:
一、实验题目
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 <linux/module.h>
#include <linux/init.h>
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.添加内核模块。