一、基本操作指令
- su
- cd
- ls
- touch
- mkdir
- rm
二、Vi/Vim编辑器
三、编译器gcc
一、 基本操作命令
- su命令:切换用户
su 【用户名】
① su root #切换到root用户
② su #切换到root用户。①和②等同
③ su rjxy #切换到rjxy用户 - cd命令:更改工作目录路径
① cd /etc #切换到“/etc”目录
② cd … #更改至当前目录的父目录(上一级)
③ cd ~rjxy #更改至用户rjxy的宿主目录(宿主目录,即用户的个人目录)
★ 非root用户下达“cd ~root”命令是否有意义? - ls命令
ls 【选项】 【目录或文件】
① ls /home #查看/home目录下的文件(不包括隐藏文件)
② ls –a /home #显示/root目录下所有文件(包括隐藏文件,隐藏文件前面带“.”)
③ ls –l /etc #长格式显示所有内容(相当于ll命令) - touch:创建空文件,更改文件的时间
touch【-r<参考文件或目录>】【-t<日期时间>】【文件】
-r:使用参考档的时间
-t:设定(修改)文件的修改时间,日期格式为“MMDDHHmm”
① touch file #创建文件file
② touch file1 file2 file3 #创建文件“file1”、“file2”和“file3” - mkdir:创建目录
mkdir 【选项】 【目录名】
① mkdir a #在当前目录下创建新目录“a”
② mkdir /home/b #在“/home”目录下创建新目录“b”
【注意】绝对路径和相对路径
★ 绝对路径:从根目录出发,以根目录为参考,如/home,表示根目录下的home子目录;
★ 相对路径:从当前目录出发,以当前目录为参考,如home,表示当前目录下的home子目录。 - rm:删除文件和目录
-f:强制删除,不再询问
-r:删除全部文件、目录和子目录
① touch file1 #在当前目录下创建文件file1
rm file1 #交互式地删除文件file1
② mkdir m1 #在当前目录下创建目录m1
③ rm –r m1 #交互式地删除目录m1
④ touch file2 file3 #在当前目录下创建文件file2和file3
rm file2 #不带-f选项,交互式删除
rm -f file3 #带-f选项,非交互式,不提示,直接删除
⑤ mkdir m2 m3 #在当前目录下创建目录m2和m3
rm -r m2 #不带-f选项,交互式删除
rm -rf m3 #带-f选项,非交互式,不提示,直接删除
vi是Linux操作系统的一个编辑器,vim是vi的升级版,不仅兼容vi编辑器的所有指令,而且在vi编辑器的基础上增加了颜色显示,便于程序开发人员编写程序,同时vim也加入了很多额外的功能,如支持多文本编辑、多窗口显示等。
vi/vim命令
① vi file1 #用vi打开文件file1进行编辑
② vim file1 #用vim打开文件file1进行编辑
vi/vim的三种模式
vi/vim编辑器共分为三种工作模式:
- 普通模式、
- 编辑模式和
- 命令模式。
-
普通模式:用vim打开一个文档后,直接见到的就是普通模式,在该模式下,用户可以通过“←↑↓→”按键来移动光标,可以删除字符或删除整行,也可以复制和粘贴数据。
复制一行-yy;
复制多行-nyy(n为数字,是要复制的行数);
粘贴-p或P(p是粘贴到光标所在行的下一行,P是粘贴到光标所在行的上一行);
删除一行-dd;
删除多行-ndd(n为数字,是要复制的行数);
撤销-u;
恢复-Ctrl+r。 -
编辑模式:在普通模式中可以进行删除、复制、粘贴等操作,但是却无法向文档中输入字符。
此时按下字母“i”、“I”、“o”、“O”、“a”、“A”、“r”或“R”,编辑器将从普通模式转入编辑模式,同时在屏幕左下方会出现“INSERT”或“REPLACE”的字样,此时才可以向文档中输入字符。在整个输入过程结束后
按“Esc”键,即可返回普通模式,此时光标将处于刚才输入的最后一个字符的位置。 -
命令模式:在普通模式中,输入“:”、“/”或“?”,编辑器将从普通模式转入命令模式,此时屏幕左下角将出现“:”、“/”或“?”的标志。在命令模式中,用户可以完成搜索、替换、高亮显示、行号显示、保存、退出甚至执行shell 指令等操作。
显示行号-set nu;(取消显示行号-set nonu)
存盘-w;
退出-q;
存盘退出-wq;
不存盘强制退出-q!。
【注意】如果编辑过程中用ctrl+z组合键,则vi编辑器会转入后台,此时再用vim编辑文件时会有警告信息,因为vim编辑文件时生成一个交换文件,如果vim没有正常退出,该交换文件还存在,会影响再次编辑,解决方法是删除交换文件“.ceshi.swp”。交换文件和原文件在同一个目录下,是一个隐藏文件,可用ls -a查看到。
2、 嵌入式Linux编译器gccgcc概述
-
gcc (GNU Compiler Collection,GNU编译器套件)是GNU 项目的编译器组件之一,也是GNU 软件产品家族具有代表性的作品。
gcc 是一个交叉平台的编译器,目前支持几乎所有主流CPU 处理器平台,它可以完成从C、C++、objective-C等源文件向运行在特定CPU硬件上的目标代码的转换,gcc不仅功能非常强大,结构也异常灵活,便携性(portable)与跨平台支持(cross-platform support)特性是gcc的显著优点。 -
在gcc 设计之初,仅仅是作为一个C语言的编译器,可是经过十多年的发展,gcc已经不仅仅能支持C语言;它现在还支持Ada、C++、Java、Objective C、Pascal、COBOL,以及支持函数式编程和逻辑编程的Mercury语言等等
gcc 是一组编译工具的总称,其软件包里包含众多的工具,按其类型,主要有以下的分类:
① C编译器 cc, cc1, cc1plus, gcc
② C++编译器 c++, cc1plus, g++
③ 库文件 libgcc.a, libgcc_eh.a, libgcc_s.so, libiberty.a, libstdc++.[a,so], libsupc++.a
用gcc编译程序生成可执行文件有时候看起来似乎仅通过编译一步就完成了,但事实上,使用gcc编译工具由C语言源程序生成可执行文件的过程并不单单是一个编译的过程,完整的编译流程要经过下面的几个过程:
- 预处理(Pre-Processing):gcc首先调用cpp命令进行预处理,主要实现对源代码编译前的预处理,比如将源代码中指定的头文件包含进来;
- 编译(Compiling):调用cc1 命令进行编译,将源代码翻译生成汇编代码;
- 汇编(Assembling):调用as 命令进行工作,将汇编代码生成扩展名为.o 的目标文件;目标文件包含机器代码(可直接被CPU执行)以及代码在运行时使用的数据,如重定位信息、用于链接或调试的程序符号(变量和函数的名字)等;
- 链接(linking):调用链接器ld处理可重定位文件,把它们的各种符号引用和符号定义转换为可执行文件中的合适信息(一般是虚拟内存地址)的过程。
gcc的安装
gcc使用时需安装如下软件:
① ppl-0.10.2-11.el6.i686.rpm
② cloog-ppl-0.15.7-1.2.el6.i686.rpm
③ mpfr-2.4.1-6.el6.i686.rpm
④ cpp-4.4.5-6.el6.i686.rpm
⑤ glibc-headers-2.12-1.25.el6.i686
⑥ glibc-headers-2.12-1.25.el6.i686.rpm
⑦ glibc-devel-2.12-1.25.el6.i686.rpm
⑧ gcc-4.4.5-6.el6.i686.rpm
⑨ libstdc+±devel-4.4.5-6.el6.i686.rpm
⑩ gcc-c+±4.4.5-6.el6.i686.rpm
由于所需安装软件包较多,可以只记住gcc和gcc-c++,由于其他的软件包都是这两个安装包的依赖文件,所以只需在安装gcc和gcc-c++的过程中根据提示再安装相应的依赖包即可。
最简便的方式是使用yum安装:
- yum install gcc
- yum install gcc-c++。
【注意】yum 是基于rpm 包管理工具,能够从指定的安装源(服务器,本地目录等)自动下载目标 rpm包并且安装,可以自动处理依赖性关系并进行下载、安装,无须繁琐地手动下载、安装每一个需要的依赖包。但是yum的rpm包来源于安装源,所以要使用yum,必须先设置yum安装源,安装源由/etc/yum.repos.d/目录中的.repo文件配置指定。
安装源可以是一个网络服务器地址,也可以是本地的安装光盘。
1.用yum安装gcc方法如下:1. 用RHEL安装光盘建立本地yum安装源
① “虚拟机”→“设置”→“CD/DVD(IDE)”→“连接”→“使用ISO镜像文件”,通过“浏览”,选择Redhat安装光盘,并确保“设备状态”中的“已连接”选项被勾选;
② 把光驱挂载到/aa目录(也可以是其他目录)
【说明】挂载:在Linux操作系统中,挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。
- a) mkdir /aa #创建目录(挂载点)
- b) mount /dev/sr0 /aa #挂载光驱
- c) mount -s #查看是否挂载成功
③ vim /etc/yum.repos.d/rhel-source.repo #rhel-source.repo文件是系统自带的yum源文件,可以直接在该文件上添加安装源的信息,但该文件只能由root用户修改。如果没有该文件,也可以自行创建一个新的文件,文件名可以任意,只需要以“.repo”结尾即可,如dvd.repo。
【向配置文件里面添加新如下新内容】
[dvd] name = install dvd baseurl = file:///aa enabled = 1 #yum源生效 gpgcheck = 0 #不对文件进行校验
2. 安装gcc
① yum install gcc #安装c编译器,安装时可以加上“-y”选项,在安装时就不再需要确认
② yum install gcc-c++ #安装c++编译器
【注意】如果安装gcc时正常,继续安装gcc-c++时提示如下错误:
这种情况说明yum安装源有问题,查看/etc/yum.repos.d目录,发现该目录下除了dvd.repo外多了一个文件packagekit-media.repo
将该文件删除,删除后再次运行yum install gcc-c++重新安装gcc-c++即可。
2.gcc常用编译选项及编译流程分析gcc是Linux 下基于命令行的c语言编译器,其基本的使用语法如下:【基本语法】 gcc [option | filename ]…
对于编译C++的源程序,其基本的语法如下。【基本语法】 g++ [ option | filename ]…
其中option 为gcc 使用时的选项,而filename 为需要用gcc 作编译处理的文件名。就gcc 来说,其本身是一个十分复杂的命令,合理地使用其命令选项可以有效提高程序的编译效率、优化代码。
gcc有超过100 个的编译选项可用,这里仅介绍最常用的几种:
-
基本编译选项
① 无选项:不带任何选项,可以将指定源文件编译成名为a.out的可执行程序
#gcc test.c #在当前目录下生成一个名为a.out的可执行文件
② -o选项:指定生成的可执行程序的文件名
在默认的状态下,如果gcc指令没有指定编译选项的情况下会在当前目录下生成一个名位a.out的可执行程序,例如:执行# gcc Test.c命令之后会生成一个a.out的可执行程序。因此,为了指定生成的可执行程序的文件名,就可以采用-o选项,比如下面的指令:执行该指令会在当前目录下生成一个名为Test的可执行文件。
【注意】使用-o选项时,-o后面必须带有可执行文件的文件名(可以任意指定) -
其他编译选项
① -E选项:预处理选项,预处理的结果直接打印输出;如果加上-o选项,可以生成.i为后缀的预处理文件。
② -S选项:编译选项,该选项会生成一个后缀名为.s的汇编语言文件,不会生成可执行的程序。
③ -c 选项:汇编选项,把.s为后缀的汇编文件生成以.o为后缀的目标文件
这是gcc 命令的常用选项,仅把源程序编译为目标代码而并不做链接的工作,所以采用该选项的编译指令同样不会生成最终的可执行程序,而是生成一个与源程序文件名相同的以.o为后缀的目标文件。
一个Test1.c的源程序经过下面的编译之后会生成一个Test1.o的文件。【注意】目标文件包含机器语言代码,但目标文件不能运行,它还缺少系统的启动代码和库代码。目标文件、启动代码和库代码由链接器结合在一起,放在一个文件里,这个文件才是可执行文件。
④ -v选项:在Shell的提示符号下键入gcc -v,屏幕上就会显示出目前正在使用的gcc的版本信息。
⑤ -x language:强制编译器用指定的语言编译器来编译某个源程序。该指令表示强制采用C++编译器来编译C程序P1.c。
⑥ -static选项:gcc在默认情况下链接的是动态库,有时为了把一些函数静态编译到程序中,而无需链接动态库就采用-static选项,它会强制程序链接静态库。



