您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 通信软件设计方法-第二讲-LINUX下C语言程序
通信软件设计方法杨雄编写二零零九年四月成都信息工程学院1讲授内容1)LINUX概况2)LINUX下C语言程序编译和调试2.1)LINUX开发环境学习(实验)3)通信系统和通信软件4)基于TCP-IP的主机到主机通信软件示例4.1)SOCKET程序设计(实验)5)无状态通信协议程序设计6)LINUX内核程序设计7)低层232接口通信程序设计8)设计一个简单链路层以及程序8.1)IP软件和链路层软件设计(实验)成都信息工程学院2第二讲LINUX下C语言程序编译和调试上讲回顾开机-执行内存00000开始的程序-阅读bios配置并初始化-调光盘或硬盘0000道扇区的程序进入内存某个区域-执行这个程序-这个程序是操作系统的第一级引导程序-这个程序把LINUX中的boot装入内存-执行boot,装入LINUX内核-启动0号进程-0号根据系统配置表(类似注册表)进程生成后台进程-为每个终端启动getty进程,等待用户登陆-getty为登陆用户启动shell进程成都信息工程学院3LINUX内核结构LinuxKernelModulesDeviceDriversModuleInterfaceDeviceDriverInterfaceSystemCallInterface(POSIX.1),shell,GUI,Compiler,Library,etc.PPPPP硬件层Linux内核层用户进程OtherDevicesCPUDiskOS服务层进程是动态调入内存的内核主要部分是静态的也有部分内核程序是动态调入的称为动态模块和进程的区别是不能被调度去取得CPU而是等待进程来调用它(和静态内核一样)成都信息工程学院4第二讲LINUX下C语言程序编译和调试shell的作用等待终端用户输入命令-检查命令的语法合法性-到文件系统中找这个命令(可执行文件)-调入这个命令(可执行文件)-执行这个可执行文件(程序)-执行完返回shell内核getty-shell-命令字串-这个命令界面-shell内存管理CPU调度文件系统硬盘管理命令程序shellshellshellshell成都信息工程学院5本章重点问题LINUX下如何编译C语言程序vi的使用成都信息工程学院6LINUX操作系统Hello!李阳第二讲LINUX下C语言程序编译和调试成都信息工程学院7C语言代码(程序)intmain(intargc,char*argv[]){if(argc2){printf(“ERROR\n”);exit(-1);}printf(“\nHello,%s!\n”,argv[1]);exit(1);}第二讲LINUX下C语言程序编译和调试示例程序2成都信息工程学院8本讲实验操作一1、开机进入登陆画面2、用root用户或你的用户登陆3、manvi4、manvivi-5、morevi-成都信息工程学院9•LINUX操作界面–Shell及常用命令–vi–gcc–makefile第二讲LINUX下C语言程序编译和调试成都信息工程学院10Linux终端使用基础什么是Shell?ShellApplicationsOperationSystemHardWare成都信息工程学院11shell的基本形式shell的种类:•查看shell种类:–/bin/sh–/bin/bash–/bin/bash2–/bin/ash–/bin/bsh–/bin/tcsh–/bin/csh•ash:贝尔实验室开发的shell,bsh是对ash的符号链接。•bash:GNU的BourneAgainshell,是GNU操作系统上默认的shell。sh以及bash2都是对它的符号链接。•tcsh:BerkeleyUNIXCshell。csh是对它的符号链接。成都信息工程学院12shell的基本形式shell命令的基本格式是:#命令名[选项]参数1参数2……shell提示符:#$man命令,检查某个命令或函数的使用方法$manmkdir成都信息工程学院13目录和文件的基本操作文件查看和连接命令cat•cat[选项]file1…分屏显示命令more•more[选项]file…按页显示命令less•less[选项]filename成都信息工程学院14复制、删除和移动命令复制命令cp•cp[选项]sourcedest或者cp[选项]source...directory删除命令rm•rm[选项]name...移动或重命名命令mv•mv[选项]sourcedest或者mv[选项]source...directory成都信息工程学院15创建和删除目录命令创建目录命令mkdir•mkdir[-p]dirName…删除删除空目录命令rmdir•rmdir[-p]dirName成都信息工程学院16切换工作目录和显示目录命令切换工作目录命令cd•cddirName显示当前路径命令pwd•pwd查看目录命令ls•ls[选项][name...]成都信息工程学院17查找与定位命令查找文件或者目录命令find•find[path…][expression]文件定位命令locate/slocate•locate[选项]searchstring成都信息工程学院18链接ln•ln[选项]sourcedest改变文件或目录时间的命令touch•touch[选项]file1[file2...]链接命令成都信息工程学院19压缩解压缩命令命令格式为:•tar主选项[辅选项]文件或者目录查看文件内容:tart(z)vf文件名•压缩和解压命令gzip•gzip[选项]文件名解压命令unzip•unzip[选项]压缩文件名普通文件tar(tar.gz)文件c(z)vfx(z)vf成都信息工程学院20常用命令显示文字命令echo•echo[-n]字符串显示日历命令cal•cal[选项][[月]年]日期时间命令date•显示日期和时间的命令格式为:date[选项][+FormatString]•设置日期和时间的命令格式为:dateSetString清除屏幕命令clear成都信息工程学院21软件包管理命令rpm安装软件•rpm-i(或者--install)[安装选项]file1.rpm...fileN.rpm删除•rpm-e(或者--erase)[删除选项]pkg1...pkgN升级•rpm-U(或者--upgrade)[升级选项]file1.rpm...fileN.rpm查询•rpm-q(或者--query)[查询选项]pkg1...pkgN校验已安装的软件包•rpm-V(或者--verify)[校验选项]pkg1...pkgN成都信息工程学院22联机帮助命令mancommandinfocommandhelp[command]成都信息工程学院23•LINUX操作界面–shell–vi–gcc–makefile第二讲LINUX下C语言程序编译和调试成都信息工程学院24本讲实验操作二1、cdext-12、vihello.c3、学习vi的使用1)命令模式使用的命令:dd删除一行p拷贝刚才删除的一行上下左右键光标的移动Del键删除一个符号ZZi进入插入/输入和编辑模式(Esc退出):进入末行命令模式成都信息工程学院25本讲实验操作二4、学习vi的使用2)插入模式使用的命令:字母,数字,符号,回车等上下左右键光标的移动Esc键返回命令模式3)末行命令模式使用的命令:w写入文件,w!强行写入文件q退出编辑,q!强行退出vi成都信息工程学院26三种工作方式命令模式Shell提示符末行模式退出vi启动vi:自动返回文本插入命令ESC插入模式成都信息工程学院27进入与退出进入vi的命令:•vi•vi文件名•~:标识空行状态行成都信息工程学院28进入与退出•命令参数:–+n:进入vi后,光标停在文件的第n行;–+:.............................................末行;–+/字符串:.................第一个指定字符串处;退出vi命令:•命令状态:–两个大写的字母Z,即ZZ;–功能:存盘并退出;•末行模式:–w:存盘不退出;–w文件名:存在指定文件中,退出;–w!文件名:覆盖保存在指定文件中,并退出。成都信息工程学院29进入与退出•末行模式–q:退出vi;–q!;退出不保存;–wq:保存文件后,退出;–x:同ZZ,退出vi,不保存;•进入插入模式的命令:–i:在光标所在位置的前面插入;–I:...................行的开头插入;–a:.................的位置的后面插入;–A:...................行的后面插入;–o:...................行的下面新建一行插入;–O:...................行上面新建一行插入;成都信息工程学院30光标的移动插入/命令模式下:•利用键盘上的方向键;命令模式下:•i、h、w、b、0、$、......成都信息工程学院31文本编辑/删除命令dh:删除前一个字符w:.......当前字b:.........前一个字d:.........当前行0:.......从前一个字符........行首..................$:.......从当前字符开始到行尾的所有字符):...........当前字符.............句尾(:........................................句首}:.......................................段尾{:.......................................段首M:.......................................屏幕中间行H:.......................................屏幕首行L:.......................................屏幕底行x:删除当前字符;d命令成都信息工程学院32其它命令查找命令•?模式:向文件头方向查找合适的文本;•n:........................重复前一个查找命令;•N:向文件尾方向...............................;成都信息工程学院33本讲实验操作三1、cdext-12、vihello.c3、gcc-ohhello.c4、./h5、vimakefile,编辑如下h:hello.cgcc-ohhello.c6、rm-r*.oh,之后用ll7、make8、ll9、./hLiYang成都信息工程学院34•LINUX操作界面–shell–vi–gcc–makefile第二讲LINUX下C语言程序编译和调试成都信息工程学院35GCC命令行详解1、gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译2、gcc的基本用法gcctest.c这样将编译出一个名为a.out的程序gcctest.c-otest这样将编译出一个名为test的程序,-o参数用来指定生成程序的名字3、为什么会出现undefinedreferenceto‘xxxxx’错误?首先这是链接错误,不是编译错误有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,那么你就要在编译数里指定程序要链接数学库,方法是在编译命令行里加入-lm。成都信息工程学院36GCC命令行详解4、-l参数和-L参数-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。我们自已要用到一
本文标题:通信软件设计方法-第二讲-LINUX下C语言程序
链接地址:https://www.777doc.com/doc-6150717 .html