UNIX命令行快速入门7
来源:互联网 发布:淘宝助手缓存清理 编辑:程序博客网 时间:2024/05/28 03:03
编译UNIX软件包:在UNIX中已经安装了许多公共和商业软件,若要自己安装软件则需要以下几个步骤:
下载源代码(一般是一个压缩文件)
解压缩源代码
编译源代码 (最难)
安装可执行文件
设置安装目录的环境变量
编译源代码:所有的高级语言代码都必须转换成一个计算机可以理解的形式,如C语言需要转为汇编再转为字节码,这样计算机才能理解。最后的阶段是将程序编译的代码和系统的内建库进行链接,生成可执行程序。由于该过程过于复杂,因此可通过一些组件和工具来简化该步骤。
make和Makefile:命令make可以让程序员来管理大型的程序或者程序的组织结构。当程序中的一部分被修改,不必编译项目的所有部分,只要编译修改过的部分就可以了。make命令组织变异的方式来自于一个叫做Makefile的文本文件,这个Makefile文件与源代码是放在一个目录下的。包含的信息就是说明如何编译软件,例如在优化阶段,决定是不是在最终程序中包含调试信息之类的问题。这个文件也会包含一些最终的文件安装到何处的信息等等,还有手册页,数据文件,所需要的库文件和配置文件等等。一些包需要你手动编辑Makefile文件来设置最终的安装目录还有其他的参数。但大多数包现在已经随GNU配置组件一起分发了。
配置:随着UNIX变种的增加,写一个可以运行在全部系统版本上的软件变得很难了。GNU配置和生成系统简化了作为源代码分发的程序的构建。configureshell脚本会尝试去猜测不同的系统在编译的时候使用的正确变量,用这些值来为每一个包构建一个Makefile。
编译一个包最简单的方法就是:
1、cd切换到包含包源代码的目录
2、输入./configure来对你的系统和包进行配置
3、输入make来编译包
4、有选择的输入make check来运行包自带的自我测试
5、输入makeinstall来安装程序文件和数据文件,还有文档手册
6、有选择的输入makeclean来删除所有二进制文件和字节码文件
configure组件支持非常非常多的额选项,可以使用--help来查看需要的选项意思。有一个选项你可能会频繁使用:--prefix和--exec-prefix,这两个选项用来指定安装的目录。跟在--prefix后面的目录是安装一些与机器无关的文件,比如文档,数据还有配置文件。选项--exec-prefix后面的是可执行文件的目录,一般是prefix的目录的子目录。
下载源代码:可先创建一个下载目录mkdir download,然后Downloadthesoftwarehere保存到你新建的目录下。
解压源代码:可先转到源代码文件夹并列出清单
cd download
ls -l
下载下来的文件名字是以.tar.gz结尾的。tar命令是将一些文件打包成一个tar文件,然后使用gzip将其生成一个tar.gz文件。
先使用gunzip命令解压缩,这会创建一个.tar文件
gunzip
units-1.74.tar.gz
然后再解压tar文件
tar-xvf units-1.74.tar
配置和创建Makefile:对于安装的软件需要仔细阅读文本文件readme和install,这两个文件包含了编译和安装软件的重要信息。units包使用GNU配置系统来编译源代码。安装文件时我们需要指定安装目录,因为默认的目录我们可能没有写权限。创建一个一个安装目录在home目录下:
mkdir~/units174(无论当前目录在哪,都在home中创建该文件)
然后运行配置组件来指定安装路径
./configure–prefix=$HOME/units174
其中变量$HOME是一个环境变量的例子,他的值是你的主目录的路径,可通过echo $HOME来获取主目录路径。
如果configure运行正确,就会创建Makefile文件,你可以看看这个文件,但是不要去修改他的内容。
构建包:通过make命令来构建包,make后会创建可执行文件,可用makecheck来检查,如果正确则可以通过makeinstall进行安装。
运行软件:安装号软件后可以看到以下几个目录
bin
二进制文件
info
GNUinfo格式文档
man
手册页
share
共享数据文件
若要运行程序必须在bin目录下然后输入./units
如果想要阅读所有的文档,可以切换到info目录,然后输入
info--file=units.info
去除不必要代码:在开发软件时执行文件中包含了很多调试信息,但对于用户来说没有必要,因此可从最终文件中去除。若要去除需要观察二进制文件在之前和之后的大小的对比,可以使用file命令来看看文件的信息。
fileunits
教程中输出
units:ELF 32-bit LSB executable, Intel 80386, version 1, dynamicallylinked (uses shared libs), not stripped
然后用
strip
命令来去除所有调试和行号信息
strip units
ls-l
可以看到文件大小变为了原来的三分之一,之后可以再检查以下文件信息
file units
教程中输出
units:ELF 32-bit LSB executable, Intel 80386, version 1, dynamicallylinked (uses shared libs), stripped
有时候你可以使用命令
make
来安装已经去除了信息的版本,只要把
makeinstall
换成
makeinstall-strip
- UNIX命令行快速入门7
- UNIX命令行快速入门
- UNIX命令行快速入门1
- UNIX命令行快速入门2
- UNIX命令行快速入门3
- UNIX命令行快速入门4
- UNIX命令行快速入门5
- UNIX命令行快速入门6
- SCO UNIX快速入门
- SCO UNIX快速入门
- 命令行快速入门
- UNIX命令行快速使用教程1
- UNIX中shell快速入门
- Ubuntu Linux命令行快速入门
- UNIX入门 2-1 命令行结构
- 命令行快速入门--常用命令行使用(笔记)
- 对话 UNIX,第 7 部分:命令行惯用语
- unix命令行归类
- maven安装以及eclipse配置新建maven项目
- CNTK入门04: CNTK中的Sequences
- USB接口接线说明
- [译][转]Google的Java编程风格指南(Java编码规范)
- Unity Invoke的另类用法
- UNIX命令行快速入门7
- LifecycleProcessor not initialized
- redis密码管理
- 关于webview加载h5提示当前网站证书不可信的一些处理方法
- PB怎么用代码修改DW的字体的属性
- Web app root system property already set to different value: 'webapp.root'
- leetcode 9 回文数
- 索尼:声控将在VR中发挥大作用
- tensorflow 学习(三)使用flags定义命令行参数