[计算机]环境搭建手册.doc

上传人:sccc 文档编号:4561280 上传时间:2023-04-27 格式:DOC 页数:43 大小:3.44MB
返回 下载 相关 举报
[计算机]环境搭建手册.doc_第1页
第1页 / 共43页
[计算机]环境搭建手册.doc_第2页
第2页 / 共43页
[计算机]环境搭建手册.doc_第3页
第3页 / 共43页
[计算机]环境搭建手册.doc_第4页
第4页 / 共43页
[计算机]环境搭建手册.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《[计算机]环境搭建手册.doc》由会员分享,可在线阅读,更多相关《[计算机]环境搭建手册.doc(43页珍藏版)》请在三一办公上搜索。

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”键向后移动一行;用“space”键向

7、后移动一页;按“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 test11) cp-拷贝一

8、个目录当中所有的文件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 创建 -x 释放-辅助选项 -v 显

9、示各个文件名称 -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:显示和设置网络配置信息-telnet:远程登陆命令-net

10、stat:显示网络连接、路由器、网络接口信息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/grub.conf-Linux

11、启动配置文件/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 如果是configure文件,就执行:#.

13、/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* (哈哈,我们用到了第二种安装方式)2)没有安装mak

14、e工具;确诊方法:执行命令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 /安装rootlocalhost # rpm aq /查

16、询rootlocalhost # rpm e /卸载2. 软件源程序安装和卸载rootlocalhost # tar /解压缩包rootlocalhost # ./configure -prefix=/配置rootlocalhost # make /编译rootlocalhost # make install /安装 修改配置文件(一般为.conf文件)rootlocalhost # make uninstall /卸载3. 如何实现LINUX与主机的交互通常实现LINUX与主机的交互有如下四种方法:l U盘;l Vmware Toolsl SSH远程登陆工具l samba3.1 利用U盘实现

17、交互用U盘实现LINUX与主机的交互可以说是最简单的一种方法了,该方法不需要安装软件,只需要点几下,输入几行命令就可以了,接下来我们将详细介绍。首先插入U盘,如下图红色圈内所示,说明U盘已经被Windows主机读取到了(呵呵,这个估计地球人都知道)其次回到LINUX主界面,在工具栏上点击VM- -会出现下图,提示USB设备(也就是你的U盘)要从Windows主机弹出,并打算连向你的虚拟机了。点OK之后,出现下图,说明U盘已经也虚拟机连接成功。接下来我们就要输入命令来使U盘里面的东本挂载到LINUX系统里面。进入LINUX主界面,右键新建终端,出现下图:输入fdisk l命令查看你的的U盘的盘符

18、,如下图,U盘盘符为:/dev/sdb1(如果你不确定哪个是新出现的U盘盘符的话,你可以在先把U盘从LINUX中弹出,方法和连接时一样,即时点击VM- -,弹出之后再输入fdisk l命令,记住哪些是系统本身就有的盘,然后再把U盘接入,输入fdisk l命令,新出现的那个必定就是你的U盘了)看清楚哪个是你的U盘以后,我们就可以挂载U盘了,你可以先新建一个文件夹,将U盘的内容挂载到你建的文件夹下,输入mkdir /mnt/usb,就会在/mnt目录下新建一个名字为usb的文件夹,接着再输入mount -t vfat /dev/sdb1 /mnt/usb(如果usb设备是FAT32 格式的,就输入

19、此命令,其他格式就将vfat换为msdos就可以了,在这里我的usb设备是FAT32 格式,所以输入上述命令。)出现下图,说明U盘已经挂载成功了,去/mnt/usb目录下看看吧,你U 盘上的所有内容都在里面了,你可以把里面的内容拷贝到LINUX系统里面。用umount /dev/sdb1即可卸载载U盘。3.2 安装Vmware Tools实现交互VMware-tools能够增强虚拟显卡和硬盘性能,可以实现主机和虚拟机之间的文件共享,并且允许你在虚拟机和主机图形用户界面之间平滑移动鼠标光标。光标设置也允许你在虚拟机和主机之间以及从一台虚拟机到另一台虚拟机复制和粘贴文本缓存。 利用Vmware T

20、ools 实现交互也是一种比较简单的方法,但这里就是涉及到在LINUX系统里面安装软件了。首先你可能会问,我怎么得到Vmware Tools的安装软件?我觉得有三种方法,第一,如果你有red hat linux 的安装盘的话,直接将其插入你的电脑;第二如果你有的是red hat linux的镜像文件的话,点击Vmware工具栏上的VMsettings,出现下图,然后browse将镜像文件载入。接下来,回到主界面,点击VM-,你会在桌面上发现一个光盘的图标,双击打开,你会发现你需要的软件就在/mnt/cdrom文件夹下。直接可以右键-复制文件,将之拷贝到其他目录安装,不过这里我们着重介绍用LIN

21、UX命令实现这些,以便熟悉LINUX命令。(在这里有些同学可能想我的第三种方法是什么,所谓的第三种方法就是直接在网上下载或者在其他地方拷贝到Vmware Tools的安装软件,利用我们上面讲到的U盘实现交互的方法,把它拷贝到LINUX系统里面)。接下来我们就讲怎么安装Vmware Tools软件吧。进入LINUX主界面,右键新建终端cd /mnt/cdrom指向目录/cdrom下,输入ls命令就可以看到该目录下的所有文件。在这个文件夹中有一个VMwareTools-6.5.0-118166.tar.gz文件。linux下的这个虚拟光驱跟我们平时熟悉的光驱都是一回事,这里将文件拷贝到别的地方只是

22、为了方便。如下图: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.gz,然后:ls,会看到一个vmware-tools-distrib文件夹。接着:cd vmware-tools-distrib。l 再输入:./vmware-install.pl,软件便开始安装了(注意/vmware-install.pl前面有个圆点噢),在执行vmware-install.pl时,出现提示让你

23、选择文件安装目录的时候,可以一路按默认选项。2、 配置软件,要想正确的运行VmwareTools,必须对其进行配置,l cd /usr/binl ./vmware-config-tools.pl. 其实,在执行./vmware-install.pl时,最后一个选项就是提示你要对vmware tools进行配置,如果你选择的是“yes”,这一步就可以省略。这一步所要做的就是告诉vmware tools如何在现有的内核上正确的运行。3、 .配置完成之后,我们的VmwareTools就安装成功了,这时你会发现你的鼠标在LINUX与WINDOS之间不需要切换就可以随便移动了,不过我们这里主要还是要讲安

24、装了VmwareTools之后怎么实现共享文件。4、 下面进行共享文档的设置 Vm-setting:options -Shared folder 选项,点击右边的Add,添加一个共享文档。添加完毕后确定就可以了。如下图,我添加的共享文件夹名为share.5、 cd /mnt,然后: ls 出现Cdrom,floppy,hgfs 这三个目录,我们在上一步设置的共享文档(share)就在hgfs目录中。3.3 利用SSH远程登陆工具实现交互我用的SSH软件版本是SSHSecureShellClient-3.2.9,首先在windows下安装SSHSecureShellClient-3.2.9,安装

25、成功后桌面上会出现SSH Secure Shell Client和SSH Secure File Transfer Client。接下来就是配置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.3

26、2.39下面我们就来配置LINUX的网络。右键新建终端,输入:cd /etc/sysconfig/nework-scripts进入/nework-scripts目录,然后:ls,会看到此目录下的所有文件,其中ifcfg-eth0(注意这里是数字0,而不是英文字母)就是我们要配置的文件,输入命令:vi ifcfg-eth0,便可查看此文件的内容,要编辑此文件,先按一下键盘上的insert的快捷键i.配置完之后按:ESC:wq后,就可以保存并退出,回到命令界面。然手输入:service network restart重启,就配置成功了。网络配置成功之后,我们就可以用SSH了,回到本机的桌面,打开S

27、SH Secure File Transfer Client,单击左上角的,在出现的对话框中输入你的LINUX的IP地址与主机名,然后点击按钮,输入密码。然后点击,便出现下图,左边为WINDOWS,右边为LINUX,现在可以实现文件的传输了。用同样的方法或者直接点击上图的就可以登陆,SSH Secure Shell Client3.4 利用samba实现交互Samba使用基于TCP/IP的SMB协议模块,能够使得Linux主机在“网络邻居”中看起来和一天windows主机相同,windows用户可以登陆到Linux主机中,实现同Linux主机的数据交换.Samba是一个工具套件,在Linux上

28、实现SMB (Session Message Block)协议,或者称之为NETBIOS /Lan Manager协议。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 #

29、 make rootlocalhost # make install 3.4.2 Samba的配置rootlocalhost # 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系统计算机 开始

30、菜单-运行,然后输入 ,回车即可访问刚才设置的共享目录 / .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(注意前面的.)rootlocalho

31、st nachos# cd ./code/build.linux5. 输入 make dependrootlocalhost build.linux# make depend6. 输入 make 看看结束有没有错误,如果没有,那么就成功了。rootlocalhost build.linux# make 7. 编译好的nachos系统镜像就在build.linux目录下,运行时直接 ./nachos 就可以了。8. 如果要到其他目录下运行的话,还要export才行。nachos详细运行参数可以用./nachos -u 得到。4.2 交叉编译工具的搭建在一种计算机环境中运行的编译程序,能编译出在另

32、外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。1. 把下载的交叉编译工具(mips-decstation.linux-xgcc.tar.gz)放到 / 目录下,即根目录下然后用tar -zvxf 命令解压即可。必须放到根目录下,因为压缩包里面包含了/usr/local的目录层次。(也可以将之放到其他目录下解压,然后把解压之后的/usr/local目录下的所有东西拷贝到/usr/local下)2. 另外还需要编译测试程序转换工具,进入 nachos/coff2noff3. 运行 ./configure4.

33、 make 即可。5. 现在进入/usr/local/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-#GCC

34、DIR = /usr/local/nachos/current/bin/decstation-ultrix-8. 保存后执行make再次测试5. Linux环境的C编程5.1 Linux平台下程序的开发流程 Linux中的主要文本编辑工具有:Vi、Vim、Emacs等。在C代码录入的过程中常用的是Vim,它提供了很好的缩进、关键词高亮等功能,加快代码的输入速度、能有效地避免输入错误。 在编译阶段,Linux的C编译器主要使用GNU gcc,它会自动完成预编译、编译、汇编、链接等过程,可以使用参数来控制gcc的行为。 调试是发现问题的主要手段,切忌人为的一行一行代码去检查来发现问题,一定要跟踪代

35、码的执行,在执行过程中发现问题。 程序的开发流程图如下: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的可执行文件。此过程会生成一系列的临时文

36、件,一般存放在/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指定库的目录位置,然后-l参数指定库的名称。注

37、意示例中库名称的指定 5.2.4 gcc的一些其他重要命令行参数 -g 在生成的可执行文件中保存符号表,在使用调试工具gdb时将用到这些信息; -D 在gcc的命令行中定义作用于所有源程序的宏; -O 指定编译器在编译代码时使用的优化级别; -w 取消编译过程中产生的警告信息的显示; -W 在编译过程中将显示更详细的警告信息; -ansi or std=c89 指定按照c标准的哪个版本对源代码进行编译 使用一条gcc语句,编译工程中所有的源代码。该方法存在以下缺点:1. 很难构造一条gcc命令来编译工程中所有的源文件,特别是在工程包含大量源文件、库的时候,写出一条完备的gcc命令将是一个噩梦;

38、2. 每次执行gcc命令将对所有的源文件从新编译一次,这是一个耗时的过程,对大型的工程尤其如此。呼唤一种简单方便,高效的工程文件管理、编译方法!5.3 Makefile的编写规则Makefile是linux下的工程控制文件。 什么是make?有什么作用? make用来管理多模块程序的编译和链接,直到生成可执行代码。为建立支持稳定而高效的可升级的大型软件产品,提供了一种强大而灵活的机制,简言之,make就是一个软件工程的管理工具。make 可自动决定一个大程序中哪些文件需要重新编译,并发布重新编译它们的命令。 怎样控制make的行为?makefile是什么?makefile是用来控制make怎样

39、编译和链接一个程序的配置文件,这主要通过定义目标与源文件的依赖关系以及生成目标使用的命令来完成。 make根据makefile中的内容控制工程的编译。5.3.1 构成makefile的(最)基本元素一个makefile由下面这样的基本元素构成:target :dependency commandstarget一般为程序所生成的文件名。例如可执行文件名或者目标文件名;一个目标也可以是一个将要执行的动作的名称,见后续示例。dependency是作为输入文件,被用来生成目标文件,一个目标文件可以由好几个输入文件编译而成。command是make所执行的动作,可以由好几个命令组成,每个命令独占一行注意

40、:每个命令行开头必须有一个键,切记。5.3.2 makefile示例在本例中,首先定义了一个target-helloword 它依赖helloword.c和show.o文件,为了生成helloword,使用的命令是:gcc o helloword show.o helloword.c 如上可解释show.o的依赖关系和生成命令。最后定义了一个名为c-lean的目标,它完成清除环境的任务。 make一般从第一个规则块(rule)开始(以.开头的目标名不能算作一个rule),被称作默认目标(default goal),也就是make命令要生成的最终文件。如上例,helloword是最终的目标文件,

41、被作为第一个rule。当你发出make命令后,make命令查找当前目录中的makefile文件,然后开始执行第一个rule。如上例,第一个rule就是生成helloword可执行文件。在完全执行该rule之前,它先要处理该rule中所有的依赖(dependencies)。而这些依赖(dependencies)又必须根据它们自己的rule来生成。如果一个目标文件的依赖文件比它本身更新,或者目标文件根本就不存在,那么将根据对应的rule重新编译生成新目标文件。除了第一个rule外,其它的rule也能执行,是因为第一个rule的依赖(dependencies)与其他的rule有关,否则只有第一个ru

42、le被执行;如果你想执行出第一个rule以外的其他独立rule,那么就必须通过make命令行参数来指明,例如上面的make clean。可以在makefile中 定义变量,并对变量赋值,在命令中使用变量名来代替输入全部的参数。这种方法让makefile具有更好的灵活性。objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o CC = gcc edit : $(objects)$(CC) -o edit $(objects) 5.3.3 makefile默认定义的变量 $* 不包含扩展名的目标文件名

43、称。 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的 依赖文件。 $ 第一个依赖文件的名称。 $? 所有依赖文件,以空格分开,这些依赖文件的修改日期比目标文件的创建日期晚。 $ 目标的完整名称。 $ 所有的依赖文件,以空格分开,不包含重复的依赖文件。5.3.4 命名一个makefile文件默认情况下,make命令会寻找下列文件:GNUmakefile, makefile和Makefile。如果你不指定makefile文件,那么你必须指定一个最终的目标文件,make命令会自动使用内部隐含的rule来编译。如果你不想用默认的makefile文件名,你也可以通过 -f file

44、name 或 -file=filename,来告诉make应该读取的文件。如果你用 -f或 -file指定了多个文件,那么它们将按顺序被联接在一起。如果你用-f或 -file指定,那么将不自动查找默认的makefile等文件。5.4 Gdb调试工具的使用 gdb 其中是需要调试的程序(此程序编译时必须使用-g选项). gdb core用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。 gdb 如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。应该在PATH环境变量中搜索得到。 5.4.1 Gdb的常用选项 file 装入想要调试的可执行文件. kill 终止正在调试的程序.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号