版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统原理与应用电子与电气工程学院第二章Linux基本操作教师:程蔚正大气象厚德载物MinnanUniversityofScienceandTechnologyLinux基本操作CONTENTS01.Linux常用命令02.vi编辑器、gcc编译器、gdb调试器03.make工程管理器04.开发环境搭建正大气象厚德载物MinnanUniversityofScienceandTechnology01PARTONELinux常用命令正大气象厚德载物MinnanUniversityofScienceandTechnology
目录结构命令详解作业总结Linux基础命令正大气象厚德载物MinnanUniversityofScienceandTechnology正大气象厚德载物MinnanUniversityofScienceandTechnology/bin:存放常用命令的可执行文件/boot:存放启动程序/dev:存放设备文件,字符设备(键盘、lcd,usb)/etc:存放启动,关闭,配置程序与文件/home:用户工作根目录/lib:存放共享链接库/root:超级用户的工作目录/sbin:系统管理员的常用管理程序/tmp:存放临时文件/lost+found:系统出现异常时,用于保存部分资料目录结构/根目录~主目录(家目录)或/home/用户名正大气象厚德载物MinnanUniversityofScienceandTechnology/misc:一些实用工具/mnt:光驱、硬盘等的挂载点/media:光驱的自动挂载点/proc:操作系统的实时信息/sys:系统中的硬件设备信息/srv:服务启动后需要提取的信息/var:主要存放系统日志/usr:存放用户程序/tftpboot:tftp服务器的服务目录/selinux:redhat提供的selinux安全程序目录结构正大气象厚德载物MinnanUniversityofScienceandTechnology进入Linux系统,必须输入用户的账号,在系统安装过程中可以创建以下两种帐号:1.root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。2.普通用户--这个帐号供普通用户使用,可以进行有限的操作。
一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。如果只需要完成一些由普通帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统,影响系统的正常运行。用户登录分两步:第一步,输入用户的登录名,
第二步,输入用户的口令;当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:[root@loclhost/root]#
这时就可以对系统做各种操作了。超级用户的提示符是“#”,其他用户的提示符是“$”。命令详解cd(changedirectory)1、作用:改变当前工作路径2、用法:
cddir/==>将当前工作路径改为dir/cd-==>将当前工作路径改为刚刚去过的目录
cd~==>将当前工作路径改为家目录一些特殊的文件:. 当前目录.. 上一级目录../.. 上上级目录/ 根目录~ 家目录、主目录/home/用户名正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解ls(list)1、作用:列出指定目录下的文件信息2、用法:
ls ==>列出当前目录中的文件名
lsdir/ ==>列出指定目录dir/中的文件名
ls-l ==>列出当前目录中的文件的详细信息
ls-a ==>列出当前目录中的文件名(包括以.开头的隐藏文件)pwd1、作用:显示当前所在路径正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解mkdir(mkdir)1、作用:创建新的目录2、用法:
mkdirdir/ ==>在当前目录中创建dir目录
mkdir-ptest2/test22==>在当前目录中创建test22目录(不存在也创建)
mkdir–m777test3 ==>在当前目录中创建权限为test3目录touch1、作用:创建新的文件2、用法:
touchmain.c ==>在当前目录中创建main.c正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解cp(copy)1、作用:复制指定的文件/目录2、用法:
cpfile1file2 ==>将file1复制一份,并命名为file2cpdir1/dir2/-r ==>将dir1/递归地复制一份,并命名为dir2/正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解rm(remove)1、作用:删除指定的文件/目录2、用法:
rmfile ==>删除文件filermdir/-r ==>递归地删除目录dir/正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解
mv(move)1、作用:将一个指定的文件/目录移动到另一个地方给一个文件/目录重命名2、用法:
mvfiledir/ ==>将文件file移动到dir/中
mvfile1file2 ==>将文件file1,重命名为file2mvdir1/dir2/ ==>将目录dir1/,重命名为dir2/(dir2/当前不存在)
mvdir1/dir2/ ==>将目录dir1/移动到dir2/中(dir2/当前已存在)注:当mv的第二个参数是一个合法的已存在的目录时,那么就是移动,否则就是重命名。正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解cat/more/less1、作用:显示文本文件内容/分屏显示文件内容2、用法:catfilemorefilelessfilehead/tail1、作用:查看一个文件的开头/结尾的若干行2、用法:
headfile-n10==>查看文件file的头10行
tailfile-n20==>查看文件file的末20行正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解find1、作用:查找文件2、用法:
finddir/-name"xxx"==>在dir/查找名字为xxx的文件
finddir/-name"*.c"==>在dir/查找后缀名是.c的文件grep1、作用:查找字符串2、用法:
grep"apple"dir/-Hrnw==>在dir/中,递归地(r)按照全字匹配(w)查找"apple"这个字符串,并且找到之后打印出其所在文件名字(H)以及行号(n)正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解tar1、作用:解压、压缩2、用法:
tarczvfexample.tar.gzfile1file2dir1/dir2/ ==>将file1file2dir1/dir2/统统按照gzip格式压缩成example.tar.gztar-tfexample.tar.gz ==>查看压缩包example.tar.gz中有哪些文件
tarxzvfexample.tar.gz ==>将example.tar.gz中的文件解压到当前目录
tarxzvfexample.tar.gz-Cdir/ ==>将example.tar.gz中的文件解压到dir/注:将以上命令中的'z'改成'j',那就是针对bzip2格式的命令,bzip2格式的压缩包的后缀是:
example.tar.bz2tarcjvfexample.tar.bz2file1file2dir1/dir2/正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解man(manual)1、作用:对相应的条目查找帮助2、用法:
manls ==>查找关于ls的默认的帮助条目
man-fread ==>列出所有关于read的帮助手册
man3posixread ==>查找在第三册手册中的关于read的帮助信息注:下载完整的man帮助文档
sudoapt-getinstallmanpages-posixmanpages-posix-devmanpages-dev正大气象厚德载物MinnanUniversityofScienceandTechnology命令详解1、在家目录中新建一个目录,名为学号_姓名2、切换到新建的目录(学号_姓名)中3、新建文件名为姓名.c(touch姓名.c)4、将姓名.c拷贝到/usr中5、切换到/usr中6、更改名字为:学号.c7、将学号.c拷贝到新建的目录(学号_姓名)8、将目录(学号_姓名)中的姓名.c和学号.c压缩为学号.tar.gz9、将学号.tar.gz拷贝到共享文件夹/mnt/hgfs/share中,进行解压。10、配置IP为192.168.班级.xx,xx为学号最好两位,192033101为,192033201为。作业正大气象厚德载物MinnanUniversityofScienceandTechnology1、目录结构2、常用命令cd,ls,mkdir,touch,cp,rm,mv,cat/more/less,head/tail,find,grep,echo,tar,man3、思政:《道德经》“天下难事必做于易,天下大事必做于细”。再难的事,也要从容易开始;再大的事,也要从细处着手。Linux系统是个大的工程,包含很多功能,它为了实现整个系统功能,首先按需求分类,然后在各个分类下再细化具体实现,采用分而治之、模块化的思想设计了满足需求的各种命令。蚂蚁精神。蚂蚁具有永不放弃、竭尽所能、团结协作的精神。
Linux命令通常只实现单一功能,但绝大多数命令会提供设置选项,以此尽可能满足用户各种需求。首先从容易的事情做起,理解Linux命令,当需要实现复杂功能时,对不同命令进行组合,合力实现所需功能。
总结正大气象厚德载物MinnanUniversityofScienceandTechnologyTHANKYOU!1、mkdir
101_cw2、cd
101_cw3、touch
cw.c4、cp
cw.c
/usr5、cd
/usr6、mv
cw.c
192033100.c7、cp
192033100.c
~/101_cw8、tar
czvf
192033100.tar.gz
cw.c
192033100.c9、cp192033100.tar.gz/mnt/hgfs
tarxzvf192033100.tar.gz正大气象厚德载物MinnanUniversityofScienceandTechnology编辑器vi编译链接器gcc调试器gdb项目管理器makeLinux下C语言编程基础重点内容正大气象厚德载物MinnanUniversityofScienceandTechnology02PARTTWOvi、gcc、gdb正大气象厚德载物MinnanUniversityofScienceandTechnology
文本编辑器vi使用
gcc编译器gdb调试器作业正大气象厚德载物MinnanUniversityofScienceandTechnologyvi是Linux系统的第一个全屏幕交互式编辑器。vi有3种工作模式,分别是命令行模式、插入模式、底行模式。命令行模式:最初进入的一般模式,该模式下可以移动光标进行浏览,整行删除,但无法编辑文字。插入模式:只有在该模式下,用户才能进行文字的编辑输入,用户可以使用[ESC]键回到命令行模式。底行模式:该模式下,光标位于屏幕底行,用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号。文本编辑器vi使用1.vihello.c2.键入i进入插入模式3.编辑自己的程序4.键入[Esc]退回到命令行模式5.键入:wq保存退出文本编辑器vi使用命令行模式插入模式底行模式输入i/a/o按下Esc输入:wq回车:q!
命令行模式功能键:yy:复制当前光标所在行[n]yy:n为数字,复制当前光标开始的n行p:粘贴复制的内容到光标所在行dd:删除当前光标所在行[n]dd:删除当前光标所在行开始的n行/name:查找光标之后的名为“name”的字符串G:
光标移动到文件尾(注意是大写)u: 取消前一个动作(注意是小写)文本编辑器vi使用底行模式功能键::w 保存:q 退出vi(系统会提示保存修改):q! 强行退出(对修改不做保存):wq 保存后退出:w[filename]另存为filename的文件:setnu 显示行号:setnonu 取消行号文本编辑器vi使用Linux系统下的gcc(GNUCCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作之一。gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。GCC编译器能将C、C++语言源程序、汇编程序编译、链接成可执行文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。使用GCC编译程序时,编译过程可以被细分为四个阶段:(1)预处理(Pre-Processing):对头文件、宏定义展开.i(2)编译(Compiling):检查代码规范性、语法,无误后翻译成汇编语句.s(3)汇编(Assembling):将汇编文件(.S)转化为目标文件(.o).o(4)链接(Linking):动态链接、静态链接成二进制可执行文件gcc编译器hello.c(二进制)可执行文件gcc通过后缀来区别输入文件的类别:gcc编译器.c为后缀的文件C语言源代码文件.a为后缀的文件由目标文件构成的库文件.C,.cc或.cxx为后缀的文件C++源代码文件.h为后缀的文件头文件.i为后缀的文件已经预处理过的C源代码文件.ii为后缀的文件已经预处理过的C++源代码文件.o为后缀的文件编译后的目标文件.s为后缀的文件汇编语言源代码文件.S为后缀的文件经过预编译的汇编语言源代码文件。gcc编译器操作1:a.c内容如下#include<stdio.h>intmain(void){ printf(Helloworld!\n); return0;}编译和运行这段程序:gcca.c-ohello./a输出:Helloworld!gcc编译器gcc最基本的用法是∶
gcc[options]filenameoptions:编译器所需要的编译选项,编译选项约有100多个,只介绍常用的参数filenames:要编译的文件名。(1)-ooutput_filename:确定可执行文件的名称output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out。(演示)(2)-c:只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。(3)-g:产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。gcc编译器的基本用法#include<stdio.h>intmain(void){
doublecounter; doubleresult; doubletemp; for(counter=0;counter<2000.0*2000.0*2000.0/20.0+2020; counter+=(5-1)/4){ temp=counter/1979; result=counter; } printf(“Resultis%lf\n”,result); return0;}(4)-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。(5)-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。操作2(optimize.c)gccoptimize.c-ooptimizetime./optimizegcc–Ooptimize.c-ooptimizetime./optimize对比两次执行的输出结果不难看出,程序的性能的确得到了很大幅度的改善gcc编译器的基本用法(6)-Idirname:将dirname所指出的目录加入到程序头文件目录列表中。#include<A.h>#include“B.h”
对于<>,预处理程序cpp在系统预设的头文件目录(如/usr/include)中搜寻相应的文件;而对于””,cpp在当前目录中搜寻头文件。此选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定dirname目录中去寻找。例:gccfoo.c–I/home/include-ofoogcc编译器的基本用法(7)-Ldirname:将dirname所指出的目录加入到库文件的目录列表中。在默认状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后再到系统预设路径中寻找。(8)-lname:在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为libm.a”的数学函数库。例:gcctest.c-L/home/lib–lfoo-otestgcc编译器的基本用法操作3,演示-Idirname,-Ldirname,-lname。
gcc编译器的基本用法main.ca.cgcc-ca.carrcsvlibmylib.aa.ogccmain.c–omain–I./include–L./lib-lmylib(9)-static:静态链接库文件例:gcc–statichello.c-ohello
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 例如:libhello.solibhello.a。当使用静态库时,连接器找出程序所需的函数,然后将它们拷贝到可执行文件,一旦连接成功,静态程序库也就不再需要了。然而,对动态库而言,就不是这样,动态库会在执行程序内留下一个标记‘指明当程序执行时,首先必须载入这个库。由于动态库节省空间,linux下进行连接的缺省操作是首先连接动态库。演示:静态链接与动态链接可执行文件大小比较。gcca.c–oagcc–statica.c–oals-lllgcc编译器的基本用法(10)-Wall:生成所有警告信息(11)-w:不生成任何警告信息(12)-DMACRO:定义MACRO宏,等效于在程序中使用#defineMACROgcc编译器的基本用法简介GDB是GNU发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:1、启动被调试程序。2、让被调试的程序在指定的位置停住。3、当程序被停住时,可以检查程序状态(如变量值)。gdb调试器操作1:vitest.c#include<stdio.h>voidmain(){ inti; longresult=0; for(i=1;i<=100;i++) { result+=i; } printf("result=%d\n",result);}gdb调试器gcc-gtest.c-otest//编译生成可执行文件gdbtest //启动GDBlist//查看程序breakmain//在main函数处设置断点run//运行程序next //单步运行continue //继续运行q//退出gdbGDB命令启动GDB(1)gdb调试程序名
例:gdbhelloworld(2)gdb file调试程序名list(l)查看程序break(b)函数名
在某函数入口处添加断点break(b)行号
在指定行添加断点break(b)文件名:行号
在指定文件的指定行添加断点break(b)行号if条件
当条件为真时,指定行号处断点生效.gdb调试器例b5ifi=10 当i等于10时第5行断点生效infobreak 查看所有设置的断点delete断点编号
删除断点run(r) 开始运行程序next(n) 单步运行程序(不进入子函数)step(s) 单步运行程序(进入子函数)continue(c) 继续运行程序print(p)变量名
查看指定变量值finish 运行程序,直到当前函数结束watch变量名
对指定变量进行监控quit(q) 退出gdb操作2gdbfiletestl //bmain //b8 //btest.c:10 //b8ifi=10 //infob //d1 //d2 //d4 //gdb调试器runprintinextnnprintiprintresultstepb3continueqTHANKYOU!总结与作业总结1、vim的使用(命令行模式、插入模式、底行模式)2、gcc的使用(gccxxx.c–oxxx)3、gdb的使用作业1、使用vi新建姓名.c,此源程序功能实现打印输出姓名和学号。2、对姓名.c进行编译3、执行查看结果正大气象厚德载物MinnanUniversityofScienceandTechnologyMian.c主程序main函数调用其他.c里面的函数main.cadc.cdiaplay.ciic.csub.cdiv.c…..Gccmax.c–omax.o–cGccmin.c–omin.o–c…Gccmain.omax.o…div.o-omain采用make管理器make正大气象厚德载物MinnanUniversityofScienceandTechnology03PARTTHERE正大气象厚德载物MinnanUniversityofScienceandTechnologymake工程管理器系统论哲学思想,系统论认为,系统是一个由若干要素以一定结构组成并具有某种功能的有机整体。运用系统论,就要从整体出发分析系统结构,理清系统构成的要素以及要素与要素、结构与要素之间的相互关系,以此确定系统在整体上达到最优的方案。
Linux软件工程通常包含多个功能文件,在构建工程目标时,就要理清目标文件与源文件之间、目标文件与目标文件之间的依赖关系,并将这种相互依赖的关系集中体现在Makefile文件中,交由工程管理器管理。正大气象厚德载物MinnanUniversityofScienceandTechnologymake概述Makefile语法及执行Makefile变量总结与作业make工程管理器正大气象厚德载物MinnanUniversityofScienceandTechnologyGNUmake是一种代码维护工具;make工具会根据Makefile文件定义的规则和步骤完成整个软件项目的代码维护工作;一般用来简化编译工作,可以极大地提高软件开发的效率;Windows下一般由集成环境自动生成;Linux下需要由自己按照语法编写;make是个命令,是个可执行程序,用来解析Makefile文件的命令,此命令存放在/usr/bin中;Makefile是个文件,此文件中描述了程序的编译规则,执行make命令时,make命令会在当前目录中找Makefile文件,根据Makefile文件里的规则编译程序;Makefile的好处
简化编译程序时输入的命令,编译时只需要输入make;
节省编译时间,提高编译效率make概述Makefile语法及执行(1)目标:是要产生的文件名称,目标可以使可执行文件、其他obj文件或动作的名称(2)依赖文件:用来输入从而产生目标的文件,一个目标通常有几个依赖文件(可以没有)(3)命令:make执行的动作,一个规则可以含有几个命令(可以没有),多个命令时,每个命令占一行。(4)make命令,名字不为Makefile或makefile,使用:make–f文件名目标:依赖文件列表<tab>命令列表Makefile语法及执行例题1:main.cmain.hmain.cmain.hmakefileC语言有很多函数(scanf/printf/…)/usr/include“”Makefile语法及执行操作1:main.chead.hsub.csum.cmain.cmakefilehead.hsum.csub.cMakefile语法及执行操作1:main.chead.hsub.csum.c,编写Makefile文件。Makefile运行结果Makefile变量变量作用:保存文件名列表、文件目录列表、编译器名、编译参数、编译输出。可以是目标体、依赖文件、命令以及Makefile文件中其他部分。分类: 1、自定义变量 2、预定义变量和自动变量main:main.o
sub.o
sum.o
gcc
main.o
sub.o
sum.o-omain思考1:如果需要添加一个依赖,例如div.o,该如何修改???Makefile变量自定义变量:大小写区分、在Makefile头部定义,几乎可在任何地方使用。
(1)定义变量变量名=变量值
CC=gcc
(2)引用变量$(变量名)或${变量名}$(CC)gcc操作2:详见Makefile2文件Makefile变量预定义变量和自动变量预定义变量含义预定义变量含义自动变量含义AR库文件维护程序的名称,默认值为arARFLAGS库文件维护程序的选项$@目标文件的完整名称AS汇编程序的名称,默认值为asASFLAGS汇编程序的选项$<依赖文件列表中的第一个依赖文件名称CCC编译器的名称,默认值为ccCFLAGSC编译器的选项$^所有不重复的依赖文件,空格分开CPPC预编译器的名称,默认值为$(CC)–ECPPFLAGSC预编译器选项CXXC++编译器的名称,默认值为g++CXXFLAGSC++编译器的选项FCFortran编译器的名称,默认值为f77FFLAGSFortran编译器的选项RM文件删除程序的名称,默认值为rm-f操作3:详见Makefile3和Makefile4(精简版)1、Makefile语法结构
目标:依赖 <tab>命令2、变量:自定义变量,预定义变量、自动变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年人心理健康建设
- 电力工程规划讲解课件
- 马湖风景名胜区规划
- 怎讲好职业规划课件
- 电商成功案例分析-三只松鼠
- 人物简笔画教程课件
- 基本养老金核定表、职工退休、退职审批表
- 护理教学模式优化现状
- 综合管廊知识
- 银屑病护理个案
- 2023-2024学年浙江省乐清市小学语文四年级期末通关测试题
- 证据材料目录证据清单范本-证据清单范本
- 钢结构构件安装钢柱质量检验评定表
- GB/T 5744-2008船用快关阀
- 原地单手肩上投篮
- GB/T 12232-1989通用阀门法兰连接铁制闸阀
- GB 20464-2006农作物种子标签通则
- 2023年油库储运操作规程
- 模仿式二声部课件
- 使用Pandas进行数据分析课件
- 《骨折概论》课件
评论
0/150
提交评论