版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.操作系统实验课环境搭建1. Vwmare的使用注:关于vwmare与vwmare上linux的安装详见老师给的操作系统原理课程设计实验手册。本文档使用的vwmare版本是Workstation 6.5 正式版,linux系统是red hat linux.1.1 了解什么是虚拟机虚拟机是指运行在Windows或Linux计算机上的一个应用程序,这个应用程序“模拟”了一个基于x86的标准PC的环境。这个环境和普通的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器、SCSI控制器等设备,提供这个应用程序的“窗口”就是虚拟机的显示器。在使用上,这台虚
2、拟机和真正的物理主机没有太大的区别,都需要分区、格式化、安装操作系统、安装应用程序和软件,总之,就像一台真正的计算机一样。使用虚拟机可以轻松模拟多种系统环境,低成本实现硬件环境模拟,还可以模拟实现各种网络环境。 1.2 VMware软件安装运行安装文件,出现以下界面选择自定义或默认软件安装选择安装路径选择是否安装桌面快捷方式开始安装软件安装完成同意用户协议 VMware界面1.3 创建一个新的虚拟机选择ISO文件安装(6.5版新功能)选择可以安装的Windows版本选择可以安装Linux的版本选择虚拟机的路径选择虚拟机硬盘大小新建虚拟机的信息创建虚拟机完成修改虚拟机设置修改虚拟机光驱设置创建虚
3、拟机还原点输入还原点名字和信息从还原点还原虚拟机管理虚拟机的还原点2. Linux 的使用2.1 如何开机首先启动Vmware workstation,进入Vmware workstation主界面。点击或者工具栏里面的按钮开机。稍等一会儿出现如下界面,用鼠标点击界面,输入用户名:root(注:用鼠标点击界面后,你会发现鼠标进入VMWARE界面出不来了,按CTRL+ALT组合键可以实现鼠标在两个系统间的切换)。按Enter键,出现下图,提示输入密码。输入密码之后,再按Enter键,如果用户名和密码正确的话,你就进入系统,接下来你就可以做相应的操作了。2.2 Linux 的目录结构在linux中
4、,目录是一个层次(或树状结构),根是所有目录的起始点,根目录主要有以下子目录l /bin:包含二进制文件,即可执行程序,这些程序是系统必需的文件l /sbin:也用于存储二进制文件,只有超级用户root才可以使用l /etc:存放配置文件,如passwd,inittab等l /boot:系统引导时使用的文件,系统中非常重要的内核vmlinux就放于该目录l /dev:存放设备文件,用户可以通过这些文件访问外部设备l /lib:存放程序运行时所需要的库文件l /temp:存放各种临时文件l /mnt:安装软盘,光盘,u盘的挂载点l /root:超级用户的个人主目录l /usr:该目录的空间比较大
5、,用于安装各种应用程序l /proc:是一个虚拟目录,存放当前内存的映像,由内核自动产生l /var:存放一些会随时改变的文件2.3 Linux 的常用命令Linux常用命令有下面几种:l 文件查看与编辑命令 -cat, more, less, vil 文件和目录操作命令-pwd, cd, ls, mkdir, rmdir , touch, cp, rm, mv, chmodl 备份与压缩命令-tar, GZIP, NUZIPl 网络命令 -hostname, ping, traceroute, ifconfig, telnet, netstatl 磁盘管理命令 -fdisk, df, dul
6、 其他命令 -man, kill, echo, ps, date, clear, setup, cal下面我们将举例介绍一下一些经常会用到的命令:1) Cat-显示文件内容cat cal1 cal2-连接多个文件cat file1 file2 > file3把文件1和文件2的内容写到文件3中cat file1 file2 >> file3把文件1和文件2的内容追加到文件3末尾2) More-逐页显示文件内容More a.txt用“enter”键向后移动一行;用“space”键向后移动一页;按“q”键退出3) Less-逐页显示文件内容less a.txt用“enter”键向后
7、移动一行;用“space”键向后移动一页;按“q”键退出用“pgup”键向前移动一页;用“pgdown”键向后移动一页,用“向上”光标键向前移动一行;用“向下”光标键向后移动一行4) Pwd -显示当前工作目录的绝对路径5) cd dirName-变换工作目录至dirName6) ls -列出目录下的内容蓝色表示目录,绿色表示可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其它文件7) touch-创建文件 例:touch test.txt8) rm-删除文件 例:rm test.txt 9) mkdir-创建目录 例:mkdir test10) rmdir-删除目录 例:rmdir
8、 test11) cp-拷贝一个目录当中所有的文件cp /etc/*.* 目标文件夹-拷贝一个目录当中所有的文件和文件夹cp R /etc 目标文件夹-覆盖目标文件并且不提醒-f12) mv-移动命令13) chmod-改变文件或目录的访问权限用户和组:u-文件拥有者;g-文件所属组;o-其它用户权限:r-读权限;w写权限;x执行权限(对于目录来说,表示切换到该目录)例:chmod o+w a.txtchchmod u=rw,g=rw,o=r a.txtchmod 664 a.txt 等价于chmod u=rw,g=rw,o=r a.txt 14) tar,备份与压缩命令-主选项 -c 创建
9、-x 释放-辅助选项 -v 显示各个文件名称 -f 后面跟归档文件名字 -z 压缩/解压缩例如:-把/home下的文件和子目录(包括隐含文件和目录)备份到a.tar中-Tar cvf a.tar /home-把/home下的文件和子目录备份到a.tar中,并且用gzip压缩-Tar czvf a.tar.gz /home-从a.tar.gz文档中恢复数据-Tar xzf a.tar.gz /home15) 网络命令-hostname:显示和设置系统的主机名-Ping ,Traceroute:显示本机到达目标主机的路由路径例:Traceroute -ifconfig:显示和设置网络配置信息-te
10、lnet:远程登陆命令-netstat:显示网络连接、路由器、网络接口信息16) 磁盘管理命令-fdisk:观察硬盘实际使用情况、分割硬盘 -df:检查文件系统的磁盘空间占用情况 -du:显示磁盘空间的使用情况 17) 其它-man :查看帮助-ps :显示瞬间进程 (process) 的动态 -kill :中止一个进程 -clear: 清屏-date:显示日期-cal:显示指定年月的月历-echo:显示文字2.4 Linux 几个重要的配置文件-Linux网络配置文件/etc/sysconfig/network-scripts/ifcfg-eth0-Grub配置文件 /boot/grub/g
11、rub.conf-Linux 启动配置文件/etc/rc.local -Linux 启动时挂载配置文件/etc/fstab2.5 如何在LINUX系统中安装软件在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种:1)一种是软件的源代码,您需要自己动手编译它。这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz)。2)另一种是软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。当然,也有用rpm格式打包的源代码,用gzip压缩过的可执行程序包。
12、只要您理解了以下的思路,这两种形式的安装包也不在话下了。下面,我们就分成两个部分来说明软件安装思路:2.5.1 以.tar.gz为后缀的软件的安装方法1.首先,使用tar -xzvf来解开这个包,如:#tar -xzvf apache_1_3_6_tar.gz这样就会在当前目录中创建了一个新目录(目录名与.tat.gz包的文件名类似),用来存放解压了的内容。如本例中就是apache_1.3.62.进入这个目录,再用ls命令查看一下所包含的文件,如:#cd apache_1.3.6#ls你观察一下这个目录中包含了以下哪一个文件:configure、Makefile还是Imake。u 如果是con
13、figure文件,就执行:#./configure#make#make installu 如果是Makefile文件,就执行:#make#make installu 如果是Imake文件,就执行:#xmkmf#make#make install3.如果没有出现什么错误提示的话,就搞定了。至于软件安装到什么地方,通常会在安装时出现。如果遇到错误提示,也别急,通常是十分简单的问题:1)没有安装C或C+编译器;确诊方法:执行命令gcc(C+则为g+),提示找不到这个命令。解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:#rpm -ivh gcc* (哈哈,我们用到了第二
14、种安装方式)2)没有安装make工具;确诊方法:执行命令make,提示找不到这个命令。解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:#rpm -ivh make*3)没有安装autoconf工具;确诊方法:执行命令make,提示找不到这个命令。解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:#rpm -ivh autoconf*4)缺少某些链接库;确诊方法:在make时,提示需要某些文件。解决方法:安装包含这个文件的包,这就需要积累了。2.5.2 以.RPM为后缀的软件的安装方法RPM是Red Hat公司随Redhat Linux推
15、出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。1.安装软件:执行rpm -ivh rpm包名,如:#rpm -ivh apache-1.3.6.i386.rpm2.升级软件:执行rpm -Uvh rpm包名。3.反安装:执行rpm -e rpm包名。4.查询软件包的详细信息:执行rpm -qpi rpm包名5.查询某个文件是属于那个rpm包的:执行rpm -qf rpm包名6.查该软件包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名2.5.3 LINUX软件安装总结1. RPM包的安装和卸载rootlocalhost # rpm ivh <指定rpm软件包.
16、rpm> /安装rootlocalhost # rpm aq <指定rpm软件包.rpm> /查询rootlocalhost # rpm e <指定rpm软件包.rpm> /卸载2. 软件源程序安装和卸载rootlocalhost # tar <软件压缩包> /解压缩包rootlocalhost # ./configure -prefix=<path>/配置rootlocalhost # make /编译rootlocalhost # make install /安装 修改配置文件(一般为.conf文件)rootlocalhost # ma
17、ke uninstall /卸载3. 如何实现LINUX与主机的交互通常实现LINUX与主机的交互有如下四种方法:l U盘;l Vmware Toolsl SSH远程登陆工具l samba3.1 利用U盘实现交互用U盘实现LINUX与主机的交互可以说是最简单的一种方法了,该方法不需要安装软件,只需要点几下,输入几行命令就可以了,接下来我们将详细介绍。首先插入U盘,如下图红色圈内所示,说明U盘已经被Windows主机读取到了(呵呵,这个估计地球人都知道)其次回到LINUX主界面,在工具栏上点击VM-> ->à会出现下图,提示USB设备(也就是你的U盘)要从Windows主机
18、弹出,并打算连向你的虚拟机了。点OK之后,出现下图,说明U盘已经也虚拟机连接成功。接下来我们就要输入命令来使U盘里面的东本挂载到LINUX系统里面。进入LINUX主界面,右键à新建终端,出现下图:输入fdisk l命令查看你的的U盘的盘符,如下图,U盘盘符为:/dev/sdb1(如果你不确定哪个是新出现的U盘盘符的话,你可以在先把U盘从LINUX中弹出,方法和连接时一样,即时点击VM-> ->à,弹出之后再输入fdisk l命令,记住哪些是系统本身就有的盘,然后再把U盘接入,输入fdisk l命令,新出现的那个必定就是你的U盘了)看清楚哪个是你的U盘以后,我们就
19、可以挂载U盘了,你可以先新建一个文件夹,将U盘的内容挂载到你建的文件夹下,输入mkdir /mnt/usb,就会在/mnt目录下新建一个名字为usb的文件夹,接着再输入mount -t vfat /dev/sdb1 /mnt/usb(如果usb设备是FAT32 格式的,就输入此命令,其他格式就将vfat换为msdos就可以了,在这里我的usb设备是FAT32 格式,所以输入上述命令。)出现下图,说明U盘已经挂载成功了,去/mnt/usb目录下看看吧,你U 盘上的所有内容都在里面了,你可以把里面的内容拷贝到LINUX系统里面。用umount /dev/sdb1即可卸载载U盘。3.2 安装Vmwa
20、re Tools实现交互VMware-tools能够增强虚拟显卡和硬盘性能,可以实现主机和虚拟机之间的文件共享,并且允许你在虚拟机和主机图形用户界面之间平滑移动鼠标光标。光标设置也允许你在虚拟机和主机之间以及从一台虚拟机到另一台虚拟机复制和粘贴文本缓存。 利用Vmware Tools 实现交互也是一种比较简单的方法,但这里就是涉及到在LINUX系统里面安装软件了。首先你可能会问,我怎么得到Vmware Tools的安装软件?我觉得有三种方法,第一,如果你有red hat linux 的安装盘的话,直接将其插入你的电脑;第二如果你有的是red hat linux的镜像文件的话,点击Vmware工
21、具栏上的VMàsettings,出现下图,然后browse将镜像文件载入。接下来,回到主界面,点击VM->,你会在桌面上发现一个光盘的图标,双击打开,你会发现你需要的软件就在/mnt/cdrom文件夹下。直接可以右键->复制文件,将之拷贝到其他目录安装,不过这里我们着重介绍用LINUX命令实现这些,以便熟悉LINUX命令。(在这里有些同学可能想我的第三种方法是什么,所谓的第三种方法就是直接在网上下载或者在其他地方拷贝到Vmware Tools的安装软件,利用我们上面讲到的U盘实现交互的方法,把它拷贝到LINUX系统里面)。接下来我们就讲怎么安装Vmware Tools软件
22、吧。进入LINUX主界面,右键à新建终端cd /mnt/cdrom指向目录/cdrom下,输入ls命令就可以看到该目录下的所有文件。在这个文件夹中有一个VMwareTools-6.5.0-118166.tar.gz文件。linux下的这个虚拟光驱跟我们平时熟悉的光驱都是一回事,这里将文件拷贝到别的地方只是为了方便。如下图:1、 安装软件l cp VMwareTools-6.5.0-118166.tar.gz /tmp 将文件拷贝到/tmp目录下。l cd /tmp进入/tmp目录。l 用tar命令将压缩包解压:tar zxvf VMwareTools-6.5.0-118166.tar
23、.gz,然后:ls,会看到一个vmware-tools-distrib文件夹。接着:cd vmware-tools-distrib。l 再输入:./vmware-install.pl ,软件便开始安装了(注意 /vmware-install.pl 前面有个圆点噢),在执行vmware-install.pl时,出现提示让你选择文件安装目录的时候,可以一路按默认选项。2、 配置软件,要想正确的运行VmwareTools,必须对其进行配置,l cd /usr/binl ./vmware-config-tools.pl. 其实,在执行.
24、/vmware-install.pl时,最后一个选项就是提示你要对vmware tools进行配置,如果你选择的是“yes”,这一步就可以省略。这一步所要做的就是告诉vmware tools如何在现有的内核上正确的运行。3、 .配置完成之后,我们的VmwareTools就安装成功了,这时你会发现你的鼠标在LINUX与WINDOS之间不需要切换就可以随便移动了,不过我们这里主要还是要讲安装了VmwareTools之后怎么实现共享文件。4、 下面进行共享文档的设置 Vm->setting:options ->Shared folder 选项,点击右边的Add,添加一个共享文档。添加完毕
25、后确定就可以了。如下图,我添加的共享文件夹名为share.5、 cd /mnt,然后: ls 出现Cdrom,floppy,hgfs 这三个目录,我们在上一步设置的共享文档(share)就在hgfs目录中。3.3 利用SSH远程登陆工具实现交互我用的SSH软件版本是SSHSecureShellClient-3.2.9,首先在windows下安装SSHSecureShellClient-3.2.9,安装成功后桌面上会出现SSH Secure Shell Client和SSH Secure File Transfer Client。接下
26、来就是配置LINUX的网络,只要将LINUX的IP与主机IP配置在同一网段,网关,子网掩码一样,就可以用SSH远程登陆LINUX了。我们先看一下WINDOWS主机的网络:点击开始>运行,输入cmd进入WINDOWS控制终端,然后输入ipconfig查看看IP地址等信息,输入nslookup可以查看看DNS服务器地址。如下图所示:我的电脑的IP:192.168.0.129,子网掩码:255.255.255.0,网关:192.168.0.1,DNS:202.115.32.39下面我们就来配置LINUX的网络。右键à新建终端,输入:cd /etc/sysconfig/nework-s
27、cripts进入/nework-scripts目录,然后:ls,会看到此目录下的所有文件,其中ifcfg-eth0(注意这里是数字0,而不是英文字母)就是我们要配置的文件,输入命令:vi ifcfg-eth0,便可查看此文件的内容,要编辑此文件,先按一下键盘上的insert的快捷键i.配置完之后按:ESCà:wq后,就可以保存并退出,回到命令界面。然手输入:service network restart重启,就配置成功了。网络配置成功之后,我们就可以用SSH了,回到本机的桌面,打开SSH Secure File Transfer Client,单击左上角的,在出现的对话框中输入你的L
28、INUX的IP地址与主机名,然后点击按钮,输入密码。然后点击,便出现下图,左边为WINDOWS,右边为LINUX,现在可以实现文件的传输了。用同样的方法或者直接点击上图的就可以登陆,SSH Secure Shell Client3.4 利用samba实现交互Samba使用基于TCP/IP的SMB协议模块,能够使得Linux主机在“网络邻居”中看起来和一天windows主机相同,windows用户可以登陆到Linux主机中,实现同Linux主机的数据交换.Samba是一个工具套件,在Linux上实现SMB (Session Message Block)协议,或者称之为NETBIOS /Lan M
29、anager协议。SMB协议通常是Windows系列用来实现磁盘和打印机共享。安装上Samba 以后,在Windows和Linux 的局域网内可以共享文件,Linux 就像一台网络PC 或者LAN内其它的Windows PC一样。3.4.1 Samba的安装rootlocalhost # tar fvxz samba-2.2.12.tar.gz rootlocalhost # cd samba-2.2.12 rootlocalhost # ./configure rootlocalhost # make rootlocalhost # make install 3.4.2 Samba的配置ro
30、otlocalhost # vi /usr/local/samba/lib/smb.conf 修改smb.conf文件,添加如下内容:all path = / browseable = yeswritable = yes 3.4.3 启动Sambarootlocalhost # /usr/local/samba/bin/nmbd -D rootlocalhost # /usr/local/samba/bin/smbd -D 3.4.4 使用Samba进入网络上其它Windows系统计算机 开始菜单->运行,然后输入 <Samba服务器计算机IP> ,回车即可访问刚才设置的共享
31、目录 / .4. nachos的搭建4.1 nachos的搭建1. 把nachos4.1下载到/usr/local目录2. rootlocalhost root#cd /usr/local rootlocalhost local# / tar -zvxf nachos-4.1.tgz-将之解压。3. 解压之后目录名为nachos-4.1,把目录改成nachos4. 进入解压后的目录,其中有code子目录,再进入其中的build.linux子目录rootlocalhost local# cd ./nachos(注意前面的.)rootlocalhost nachos# cd ./code/buil
32、d.linux5. 输入 make dependrootlocalhost build.linux# make depend6. 输入 make 看看结束有没有错误,如果没有,那么就成功了。rootlocalhost build.linux# make 7. 编译好的nachos系统镜像就在build.linux目录下,运行时直接 ./nachos 就可以了。8. 如果要到其他目录下运行的话,还要export才行。nachos详细运行参数可以用./nachos -u 得到。4.2 交叉编译工具的搭建在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉
33、编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。1. 把下载的交叉编译工具(mips-decstation.linux-xgcc.tar.gz)放到 / 目录下,即根目录下然后用tar -zvxf 命令解压即可。必须放到根目录下,因为压缩包里面包含了/usr/local的目录层次。(也可以将之放到其他目录下解压,然后把解压之后的/usr/local目录下的所有东西拷贝到/usr/local下)2. 另外还需要编译测试程序转换工具,进入 nachos/coff2noff3. 运行 ./configure4. make 即可。5. 现在进入/usr/loca
34、l/nachos/code/test目录编译测试用例,检查交叉编译器是否安装正确6. 执行make7. 如果出现错误信息则vi Makefile.dep,按以下方式修改CPP = /usr/local/nachos/lib/gcc-lib/decstation-ultrix/2.95.2/cpp#CPP = /usr/local/nachos/current/lib/gcc-lib/decstation-ultrix/2.7.2.1/cppGCCDIR = /usr/local/nachos/bin/decstation-ultrix-#GCCDIR = /usr/local/nachos/c
35、urrent/bin/decstation-ultrix-8. 保存后执行make再次测试5. Linux环境的C编程5.1 Linux平台下程序的开发流程Ø Linux中的主要文本编辑工具有:Vi、Vim、Emacs等。在C代码录入的过程中常用的是Vim,它提供了很好的缩进、关键词高亮等功能,加快代码的输入速度、能有效地避免输入错误。 Ø 在编译阶段,Linux的C编译器主要使用GNU gcc,它会自动完成预编译、编译、汇编、链接等过程,可以使用参数来控制gcc的行为。Ø 调试是发现问题的主要手段,切忌人为的一行一行代码去检查来发现问题,一定要跟踪代码的执行,在
36、执行过程中发现问题。 程序的开发流程图如下:5.2 编译工具Gcc的使用5.2.1 Gcc使用概述Ø Linux平台通用的C编译器是GNU的Gcc。可以通过以下命令查看系统中Gcc的版本:#gcc -versionØ Gcc的使用方法很直观,直接以待编译的源代码文件作为Gcc的输入参数,Gcc将自动完成代码的预编译、编译、汇编、链接等过程,例如现有一个C的源文件helloword.c使用如下命令编译该文件:#gcc helloword.c Ø gcc将从helloword.c中读取源代码,完成预编译、编译、汇编、链接等过程,最后生成一个名为a.out的可执行文件。
37、此过程会生成一系列的临时文件,一般存放在/tmp/目录下。 Ø gcc通过-o参数来控制输出的可执行程序的名称。(命令“gcc c helloword.c”可以直接生成helloword.o)5.2.2 怎样编译多个源文件示例中将多个源文件作为gcc的输入即可编译多个文件,同时展示了-c参数的用处。 5.2.3 怎样将程序编译为动态链接库使用shared参数告诉gcc将代码编译成动态库,但是库的名字一定要起为libxxx.so,当动态库编译好后就可以在其他程序中使用动态库的功能,如helloword中就使用了libshow.so中的功能。为了将库链接到本地程序,首先需要使用-L指定库
38、的目录位置,然后-l参数指定库的名称。注意示例中库名称的指定 5.2.4 gcc的一些其他重要命令行参数Ø -g 在生成的可执行文件中保存符号表,在使用调试工具gdb时将用到这些信息;Ø -D 在gcc的命令行中定义作用于所有源程序的宏;Ø -O 指定编译器在编译代码时使用的优化级别;Ø -w 取消编译过程中产生的警告信息的显示;Ø -W 在编译过程中将显示更详细的警告信息;Ø -ansi or std=c89 指定按照c标准的哪个版本对源代码进行编译 使用一条gcc语句,编译工程中所有的源代码。该方法存在以下缺点:1. 很难构造一条
39、gcc命令来编译工程中所有的源文件,特别是在工程包含大量源文件、库的时候,写出一条完备的gcc命令将是一个噩梦;2. 每次执行gcc命令将对所有的源文件从新编译一次,这是一个耗时的过程,对大型的工程尤其如此。呼唤一种简单方便,高效的工程文件管理、编译方法!5.3 Makefile的编写规则Makefile是linux下的工程控制文件。Ø 什么是make?有什么作用? make用来管理多模块程序的编译和链接,直到生成可执行代码。为建立支持稳定而高效的可升级的大型软件产品,提供了一种强大而灵活的机制,简言之,make就是一个软件工程的管理工具。make 可自动决定一个大程序中哪些文件需要
40、重新编译,并发布重新编译它们的命令。 Ø 怎样控制make的行为?makefile是什么?makefile是用来控制make怎样编译和链接一个程序的配置文件,这主要通过定义目标与源文件的依赖关系以及生成目标使用的命令来完成。 make根据makefile中的内容控制工程的编译。5.3.1 构成makefile的(最)基本元素一个makefile由下面这样的基本元素构成:target :dependency <Tab>commandstarget一般为程序所生成的文件名。例如可执行文件名或者目标文件名;一个目标也可以是一个将要执行的动作的名称,见后续示例。dependenc
41、y是作为输入文件,被用来生成目标文件,一个目标文件可以由好几个输入文件编译而成。command是make所执行的动作,可以由好几个命令组成,每个命令独占一行注意:每个命令行开头必须有一个<Tab>键,切记。5.3.2 makefile示例在本例中,首先定义了一个target-helloword 它依赖helloword.c和show.o文件,为了生成helloword,使用的命令是:gcc o helloword show.o helloword.c 如上可解释show.o的依赖关系和生成命令。最后定义了一个名为c-lean的目标,它完成清除环境的任务。 make一般从第一个规则块
42、(rule)开始(以.开头的目标名不能算作一个rule),被称作默认目标(default goal),也就是make命令要生成的最终文件。如上例,helloword是最终的目标文件,被作为第一个rule。当你发出make命令后,make命令查找当前目录中的makefile文件,然后开始执行第一个rule。如上例,第一个rule就是生成helloword可执行文件。在完全执行该rule之前,它先要处理该rule中所有的依赖(dependencies)。而这些依赖(dependencies)又必须根据它们自己的rule来生成。如果一个目标文件的依赖文件比它本身更新,或者目标文件根本就不存在,那么将
43、根据对应的rule重新编译生成新目标文件。除了第一个rule外,其它的rule也能执行,是因为第一个rule的依赖(dependencies)与其他的rule有关,否则只有第一个rule被执行;如果你想执行出第一个rule以外的其他独立rule,那么就必须通过make命令行参数来指明,例如上面的make clean。可以在makefile中 定义变量,并对变量赋值,在命令中使用变量名来代替输入全部的参数。这种方法让makefile具有更好的灵活性。objects = main.o kbd.o command.o display.o insert.o search.o files.o utils
44、.o CC = gcc edit : $(objects)$(CC) -o edit $(objects) 5.3.3 makefile默认定义的变量Ø $* 不包含扩展名的目标文件名称。Ø $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的Ø 依赖文件。Ø $< 第一个依赖文件的名称。Ø $? 所有依赖文件,以空格分开,这些依赖文件的修改日期比目标文件的创建日期晚。Ø $ 目标的完整名称。Ø $ 所有的依赖文件,以空格分开,不包含重复的依赖文件。5.3.4 命名一个makefile文件默认情况下,make命令会寻找下列文件:GNUmakefile, makefile和Makefile。如果你不指定makefile文件,那么你必须指定一个最终的目标文件,make命令会自动使用内部隐含的rule来编译。如果你不想用默认的makefile文件名,你也可以通过 -f filename 或 -file=filename,来告诉make应该读取的文件。如果你用 -f或 -file指定了多个文件,那么它们将按顺序被联接在一起。如果你用-f或 -file指定,那么将不自动查找默认的makefile等文件。5.4 Gdb调试工具的使用Ø gdb <program>其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工资按时发放民工保障书
- 赠与合同借款租赁问题探讨
- 育苗种子生产合作
- 跑步机预售合同补充协议
- 工程质量保证保函
- 旅游服务合同的合规观察
- 高强度水泥砖供应合同
- 公路工程分包商的劳务
- 品质保证信誉保
- 外贸绿植购销协议
- 燃气有限公司突发环境专项应急预案
- 【课件】供应商现场与质量管理
- 2024年立式碾米机项目可行性研究报告
- 狼疮性脑病的护理
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 2024年认证行业法律法规及认证基础知识 CCAA年度确认 试题与答案
- Unit 1 - Unit 6 知识点(知识清单)-2024-2025学年人教PEP版(2024)英语三年级上册
- 花卉学智慧树知到期末考试答案章节答案2024年浙江农林大学暨阳学院
- T∕ACSC 01-2022 辅助生殖医学中心建设标准(高清最新版)
- 在全市现代生态渔业现场推进会上的讲话
- (完整版)消防工程施工进度计划表
评论
0/150
提交评论