`

Linux笔记

阅读更多
Linux应用软件安装基本方法

  要充分发挥电脑的作用,就得有大量的应用软件,完成不同的工作。在Windows环境中安装各种应用软件的思路与方法,想必大家早已熟悉。然而,在使用Linux时,我们却总会被这些本不应该是问题的问题所困扰:怎么安装应用软件?我的软件安装在什么地方?如何删除不要的应用软件?……

  下面,我们就一起来认识一下这些方面的知识。

一、解析Linux应用软件安装包
  通常Linux应用软件的安装包有三种:

  1) tar包,如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。

  2) rpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。

  3) dpkg包,如software-1.2.3-1.deb。它是Debain Linux提供的一种包封装格式。

  而且,大多数Linux应用软件包的命名也有一定的规律,它遵循:

  名称-版本-修正版-类型

  例如:

  1)software-1.2.3-1.tar.gz 意味着:

   软件名称:software

   版本号:1.2.3

   修正版本:1

   类型:tar.gz,说明是一个tar包。

  2)sfotware-1.2.3-1.i386.rpm

   软件名称:software

   版本号:1.2.3

   修正版本:1

   可用平台:i386,适用于Intel 80x86平台。

   类型:rpm,说明是一个rpm包。

   注:由于rpm格式的通常是已编译的程序,所以需指明平台。在后面会详细说明。

  而software-1.2.3-1.deb就不用再说了吧!大家自己练习一下。

二、了解包里的内容
  一个Linux应用程序的软件包中可以包含两种不同的内容:

  1)一种就是可执行文件,也就是解开包后就可以直接运行的。在Windows中所 有的软件包都是这种类型。安装完这个程序后,你就可以使用,但你看不到源程序。而且下载时要注意这个软件是否是你所使用的平台,否则将无法正常安装。

  2)另一种则是源程序,也就解开包后,你还需要使用编译器将其编译成为可执行文件。这在Windows系统中是几乎没有的,因为Windows的思想是不开放源程序的。

  通常,用tar打包的,都是源程序;而用rpm、dpkg打包的则常是可执行程序。一般来说,自己动手编译源程序能够更具灵活性,但也容易遇到各种问题和困难。而相对来说,下载那些可执行程序包,反而是更容易完成软件的安装,当然那样灵活性就差多了。所以一般一个软件总会提供多种打包格式的安装程序的。你可以根据自己的情况来选择。

三、搞定使用tar打包的应用软件
  1. 安装:

  整个安装过程可以分为以下几步:

  1)取得应用软件:通过下载、购买光盘的方法获得;

  2)解压缩文件:一般tar包,都会再做一次压缩,如gzip、bz2等,所以你需要先解压。如果是最常见的gz格式,则可以执行:“tar –xvzf 软件包名”,就可以一步完成解压与解包工作。如果不是,则先用解压软件,再执行“tar –xvf 解压后的tar包”进行解包;

  3)阅读附带的INSTALL文件、README文件;

  4)执行“./configure”命令为编译做好准备;

  5)执行“make”命令进行软件编译;

  6)执行“make install”完成安装;

  7)执行“make clean”删除安装时产生的临时文件。

  好了,到此大功告成。我们就可以运行应用程序了。但这时,有的读者就会问,我怎么执行呢?这也是一个Linux特色的问题。其实,一般来说,Linux的应用软件的可执行文件会存放在/usr/local/bin目录下!不过这并不是“放四海皆准”的真理,最可靠的还是看这个软件的INSTALL和README文件,一般都会有说明。

  2. 卸载:

  通常软件的开发者很少考虑到如何卸载自己的软件,而tar又仅是完成打包的工作,所以并没有提供良好的卸载方法。

  那么是不是说就不能够卸载呢!其实也不是,有两个软件能够解决这个问题,那就是Kinstall和Kife,它们是tar包安装、卸载的黄金搭档。它们的使用方法,笔者会另行文介绍。在此就不加赘述了。

四、搞定使用rpm打包的应用软件
  rpm可谓是Redhat公司的一大贡献,它使Linux的软件安装工作变得更加简单容易。

  1. 安装:

  我只需简单的一句话,就可以说完。执行:

   rpm –ivh rpm软件包名

  更高级的,请见下表:

  rpm参数      参 数 说 明
   -i         安装软件
   -t      测试安装,不是真的安装
   -p        显示安装进度
   -f        忽略任何错误
   -U         升级安装
   -v      检测套件是否正确安装


  这些参数可以同时采用。更多的内容可以参考RPM的命令帮助。

  2. 卸载:

  我同样只需简单的一句话,就可以说完。执行:

   rpm –e 软件名

  不过要注意的是,后面使用的是软件名,而不是软件包名。例如,要安装software-1.2.3-1.i386.rpm这个包时,应执行:

   rpm –ivh software-1.2.3-1.i386.rpm

  而当卸载时,则应执行:

   rpm –e software。

  另外,在Linux中还提供了象GnoRPM、kpackage等图形化的RPM工具,使得整个过程会更加简单。这些软件的具体应用,笔者会另行文介绍。

五、搞定使用deb打包的应用程序
  这是Debian Linux提供的一个包管理器,它与RPM十分类似。但由于RPM出现得更早,所以在各种版本的Linux都常见到。而debian的包管理器dpkg则只出现在Debina Linux中,其它Linux版本一般都没有。我们在此就简单地说明一下:

  1. 安装

   dpkg –i deb软件包名

   如:dpkg –i software-1.2.3-1.deb

  2. 卸载

   dpkg –e 软件名

   如:dpkg –e software

















不同的linux发行版的命令数量不一样,但是最少的命令也有200多个。

基本Shell命令使用:(区分大小写)
(1) 创建目录:mkdir
mkdir /home/dor
mkdir -p /home/dir/dr2 同时创建两个目录dir和dr2
(2) 显示目录
dir /home/xia
ls /home/xia 基本相同
ls -a 显示所有包括隐藏文件
ls -l 以列的形式 并显示文件的详细信息
ls -lat 显示文件的建立时间
ls -al a+l
(3) cd 目录定义
cd .. 回上一层目录
cd 或者 cd ~ 回主目录
(4) 移动 mv
mv /home/dir/dr /home/dir 文件夹移动
mv /home/dir/dir2/t /home/dir 文件移动
(5) 复制 cp
cp 复制文件
cp -r 复制文件夹 子目录 文件
cp -a 复制目录 子目录
cp -f 强制复制不提示覆盖
cp -i 提示覆盖
(6) 删除 rm 删除文件
rm -r 删除文件夹 包括非空的目录
rmdir 删除目录(空目录)
(7)cat 创建文本文件
cat >f2 之后输入文本内容........
按ctrl+D 结束输入,存盘退出
   若与现有文件重名,会覆盖
(8) vi文本编辑器
vi 1.txt 创建一个文本文件,若存在则打开该文件
按i 命令模式->输入模式
按ESC 输入模式->命令模式
命令模式下 按: 命令模式->末行输入模式
输入wq 存盘退出
输入q! 不存盘退出
命令模式下 h l j k可移动光标
<Ubuntu下也可以用gedit启动进行编辑>
(9) 解压
*.tar.gz 用tar -xzvf解压
*.tar.bz2 用tar -xjvf解压
*.rar unrar e 文件名 (注意没有-)
*.zip unzip 文件名
(10) gcc
gcc new.c ./a.out 默认生成a.out文件
gcc -o new new.c 生成new可执行二进制文件
gcc -o new.c 不可以这样用
以上:new.c必须在用户目录或者当前目录下
gcc -o new /home/xia/Down/new.c
生成的new也在用户目录或者当前目录下
(10)其他
安装和登陆命令:login shutdown halt reboot install mount umount chsh exit
网络操作: ifconfig ip ping telnet ftp route
find 档案搜寻 date 现在时间日期 who 查询目前和你使用同一台机器的人及login地点
w 查询目前上机者的详细资料 ps 显示进程状态 kill 停止某进程 su 权限转换
















gcc命令:

(1) 二进制可执行文件没有后缀(用cygwin生成的有exe后缀),加上任意的后缀均可。
gcc example.c //生成默认二进制文件 a.out 或者a.exe(cygwin环境)

gcc -o example example.c
gcc example.c -o example //两种写法均可,生成example二进制可执行文件

(2) 目标文件后缀名为.o 不能直接执行
gcc -c example.c
gcc example.c -c //两种写法均可,生成example.o目标文件

//不能使用gcc -c ex.o example.c生成指定文件名的.o文件
但是可以使用如下语句:
gcc -c example.c -o ex.o 或
gcc -c -o ex.o example.c
从而生成ex.o目标文件



gcc 编译选项中:
-o 要求编译器生成指定文件名的可执行文件
-c 要求编译器只进行编译不链接,生成.o目标文件 文件名为源文件的名字,将其后缀.c或.cc改成.o
-g 提供以后对程序进行调试的信息 (使用gdb进行调试时必须使用该选项)
-Wall 指定生成全部的警告信息
-O 编译时使用该选项进行优化,提高可执行文件的效率












gcc编译过程:

参考:http://it.china-b.com/linux/linuxbc/20090525/19438_1.html

===================================================


在使用GCC编译程序时,编译过程可以被细分为四个阶段:

预处理(Pre-Processing)

编译(Compiling)

汇编(Assembling)

链接(Linking)
====================
hello.c:

#include <stdio.h>

void main(){
printf("Hello World!");

}


然后执行下面的命令编译和运行这段程序:

# gcc hello.c -o hello
# ./hello
Hello World!
从程序员的角度看,只需简单地执行一条GCC命令就可以了,但从编译器的角度来看,却需要完成一系列非常繁杂的工作。首先,GCC需要调用预处理程序 cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,GCC会调用ccl和as将处理后的源代码编译成目 标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。

为了更好地理解GCC的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每步的运行结果。

*************************************************************

第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:


# gcc -E hello.c -o hello.i

此时若查看hello.cpp文件中的内容,会发现stdio.h的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。

********************************************************
下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:


# gcc -c hello.i -o hello.o

GCC默认将.i文件看成是预处理后的C语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-x参数让GCC从指定的步骤开始编译。

***********************************************************
最后一步是将生成的目标文件链接成可执行文件:


# gcc hello.o -o hello

*******************************************************

在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成 了多个编译单元,使用GCC能够很好地治理这些编译单元。假设有一个由foo1.c和foo2.c两个源文件组成的程序,为了对它们进行编译,并最终生成 可执行程序foo,可以使用下面这条命令:


# gcc foo1.c foo2.c -o foo

假如同时处理的文件不止一个,GCC仍然会按照预处理、编译和链接的过程依次进行。假如深究起来,上面这条命令大致相当于依次执行如下三条命令:


# gcc -c foo1.c -o foo1.o
# gcc -c foo2.c -o foo2.o
# gcc foo1.o foo2.o -o foo












Makefile 编写基本规则:

GNU Make的工作主要是读一个文本文件makefile。makefile是用bash语言写的,是一种很像basic的一种命令解释语言。这个文件主要描述了有关哪些文件时从哪些依赖文件中产生的,是用何种命令来进行这个产生过程的。有了这些信息,make就会检查磁盘的文件,如果目标文件的日期至少比它的一个依赖文件日期早的话,make就会执行相应命令,以更新目标文件。

一个makefile主要规则
目标文件名:依赖文件名
(Tab键)命令

最简单的makefile:

Hello : Hello.c
gcc -o Hello Hello.c
=============================
包含两个源文件的makefile

executable : main.o io.o
gcc main.o io.o -o excutable
main.o : main.c
gcc -c main.c -o main.o
io.o : io.c
gcc -c io.c -o io.o

========================
make从第一条规则开始,executable是makefile最终要生成的二进制可执行文件。
给出的规则说明executable依赖于两个目标文件 main.o io.o
如果executable比它依赖的文件中任何一个旧的话,下一行命令就会被执行。
但是,在检查main.o和io.o之前,它会往下查找那些把main.o和io.o作为目标文件的规则,即main.o依赖于main.c,如果main.o早于main.c,下面的命令就会被执行。
==========================

makefile既可以使用简单的命令,也可以使用分布式的命令,参考上面关于gcc的编译过程。
===========================================
安装开源软件的过程:

执行“./configure”命令为编译做好准备;

执行“make”命令进行软件编译;

执行“make install”完成安装;

执行“make clean”删除安装时产生的临时文件

目标文件包里经常只有configure configure.in makefile.am和makefile.in
这些文件和makefile是什么关系呢?
如下:

http://otho.douban.com/view/photo/photo/9613d191ee27ae16ae111e784e0e436d/x482983335.jpg


参考:
http://jaguar13.iteye.com/blog/614427
















转载自:http://www.douban.com/group/topic/11441467/
分享到:
评论

相关推荐

    老男孩linux笔记

    老男孩linux笔记

    Linux笔记.zip

    这份“Linux笔记.zip”文件显然包含了关于Linux操作系统的详细学习资料,特别是对命令行操作的总结。以下是根据标题、描述和标签生成的相关知识点: 1. **Linux命令**:Linux的核心在于其命令行界面,其中包含了...

    国嵌Linux笔记.zip

    【国嵌Linux笔记】 在IT领域,Linux是一个广泛使用的开源操作系统,它的内核由林纳斯·托瓦兹(Linus Torvalds)于1991年创建。Linux以其稳定、安全、高效和可定制性著称,尤其在服务器、云计算、物联网(IoT)以及...

    黑马Linux笔记.zip

    【标题】"黑马Linux笔记.zip"是一个包含了作者在学习Linux操作系统过程中所整理的学习资料的压缩包。这个压缩文件主要是为了帮助读者深入理解Linux系统的核心概念、命令操作以及系统管理技能。 【描述】"黑马学习...

    Linux笔记.pdf

    Linux 笔记 一、Linux 概述 Linux 是一个开源的操作系统,由 Linus Torvalds 于 1991 年创建。它是一种自由、开放的操作系统,任何人都可以自由地使用、修改和分发。 二、Linux 的特点 1. 严格区分大小写 2. ...

    华为工程师总结Linux笔记.pdf

    Linux 入门到精通企业实战 1 Linux 基础篇 1 Linux 进阶篇 3 Linux 高级篇 4 第 1 章 Linux 快速入门 5 第 2 章 Linux 发展及系统安装 15 第 3 章 CentOS 系统管理 42 第 4 章 Linux 必备命令 72 第 5 章 Linux 用户...

    linux笔记.zip

    总的来说,这份"Linux笔记"涵盖了从基础操作到系统管理,再到高级服务配置的广泛内容。通过系统地学习和实践,你将能够熟练地驾驭Linux系统,并为更深层次的技术探索做好准备。无论是为了RHCSA或RHCE的认证,还是...

    linux笔记.txt

    常规的linux笔记

    Linux笔记全套-最新版.zip

    Linux笔记全套-最新版.zipLinux笔记全套-最新版Linux笔记全套-最新版Linux笔记全套-最新版Linux笔记全套-最新版Linux笔记全套-最新版Linux笔记全套-最新版Linux笔记全套-最新版Linux笔记全套-最新版Linux笔记全套-...

    Linux笔记xmind文档,linux命令整理

    Linux笔记xmind文档,linux命令整理 

    linux笔记笔记笔记笔记

    以上就是“Linux笔记笔记笔记笔记”所涵盖的主要知识点,这些内容覆盖了Linux系统的基本操作、网络编程、脚本编写、版本控制等多个方面,对于提升Linux技能和解决实际问题大有裨益。学习并熟练掌握这些知识,能够...

    韩顺平linux 笔记

    Linux 笔记 Linux 是一个开源的操作系统,具有免费、稳定、安全等特点。Linux 有两个主要方向:Linux 系统管理员和 Linux 软件工程师。学习 Linux 需要经过以下几个阶段:Linux 基础知识、Unix 环境高级编程、Linux...

    Linux笔记linux

    这份"Linux笔记linux"包含了丰富的学习资料,非常适合初学者掌握Linux的基础知识和进阶技能。 在Linux的世界里,理解其核心概念至关重要。首先,Linux是基于Unix的操作系统,它的设计哲学强调了模块化和可移植性。...

    韩顺平讲linux笔记(文档)

    韩顺平讲linux笔记

    Linux学习笔记【博文整理系列】

    Linux笔记——vim常用操作及扩展补充[手册] Linux笔记——linux常用命令集合 Linux笔记——命令:awk Linux笔记——命令:sed Linux笔记——命令:grep Linux笔记——命令:find Linux笔记——命令:Sort,uniq,join,...

    韩顺平linux笔记

    韩顺平 Linux 笔记 本资源为韩顺平老师的 Linux 笔记,涵盖了 Linux 的基础知识、系统管理员、嵌入式开发、Java 网络编程等多个方面。 Linux 基础知识 Linux 是一个免费的、开源的、稳定的、安全的操作系统,支持...

    安全课堂kali linux笔记1~100课.zip

    Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的...

    韩顺平 LINUX 笔记全

    韩顺平 LINUX平台 课堂学习笔记 包括1,2,3,4,5

    Linux笔记(做的笔记)

    Linux笔记,笔记中包含Linux的知识点,但是我还没有完全整理完,后面我会补上的!

    linux笔记(尚硅谷韩顺平linux笔记)

    Linux笔记 配合我的博客使用 为我的博客Linux常用命令文本版

Global site tag (gtag.js) - Google Analytics