`

[转][详解linux源码包安装过程

阅读更多
详解linux源码包安装过程



1.解压缩包



可以通过下载或其他方式获得了一个软件包,通常它是一个压缩文件,大部分可能是存档的和压缩的,这些文件一般以.tar .gz为扩展名。
首先拷贝它到一个目录,然后untar和gunzip解压它。通常这个命令是

tar xzvf filename [filename是软件文件名称]

解压后的文件一般会在当前目录下的创建子目录,并以这个包名来命名。你也可以用用这个命令预先查看结果tar tzvf filename,显示包里有那些解压文件。
源文件如果是新的bzip2 (.bz2)格式,可用
bzip2 -cd filename | tar xvf -,或更简单的tar xyvf filename,这很不错的tar命令被不断的完善。



说明:
A:有时候一些文件必须安装在用户的home目录下,或更多的是在一个固定的目录,比如/, /usr/src,或/opt。所以必须仔细阅读安装包的配置信息。当一个软件包里如果有config和Makefiles文件则最好去编辑它,这里包括了安装指令和说明。提示:你改变makefile会导致不同的结果。大部分软件包允许用make install自动处理安置二进制文件在适当的系统位置。

B:你可能碰到过一些共享文件、shell存档文件、尤其是Internet上的源码新闻组。它们保留的原因是具有人性化的可读性,并且允许新闻组缓冲并通过它们筛选和剔除出不合格的。它们可能用unshar filename.shar命令来解压。

C:一些源码存档文件是用非标准的DOS,Mac或其他压缩的比如:
zip, arc, lha, arj, zoo, rar, and shk.

D:有时候,你可能需要使用一个patch或显示改变了的diff文件来升级或修复存档的源码文件。这doc文件或者README文件将告诉你怎么去使用。一个很好的命令用标准语法来调用的命令是patch < patchfile.

2:关于rpm安装包
一些Linux用户惧怕通过使用源码来手动安装软件包,不过现在有方便的rpm和deb或新格式的slp包。例如:rpm安装运行平稳又快,作为一个软件安装在某几个有名的操作系统。

作为方便的RPM包也存在很多不好的缺点,例如:

A:要了解软件中更多更详细的内容你必须去在二进制中去了解,而不是rpm包。

B:还有安装一个rpm包如果需要依赖关系那么安装就可能会导致失败。

C:当rpm请求你系统中不同版本的库,那么安装将不能继续,除非你为错误的库位置创建连接符号到正确的位置。

说明:必须使用root安装rpm和deb。因为它需要必须的写入权限。

最简单的,用命令rpm -i packagename.rpm和dpkg --install packagename.deb会自动解包和安装。

3:关于安装Linux包出现的一些问题及解决方案

  假设make失败有个链接错误:-lX11: No such file or directory,正好在xmkmf之后已被调用,这可能意味着Imake不能被完全建立。检查第一部分Makefile文件的的行是这样:

·        LIB=           -L/usr/X11/lib

·        INCLUDE=       -I/usr/X11/include/X11

·        LIBS=          -lX11 -lc -lm

这个-L和-I开关告诉编译器和链接分别在哪里找到library和include文件。在这个例子里,X11库应该在/usr/X11/lib目录,且X11包含文件应该在/usr/X11/include/X11目录里。假如对于你的机器上的这个错误,请处理修改Makefile并重新再make。

没有声明涉及的数学库函数,像下列各项:
/tmp/cca011551.o(.text+0x11): undefined reference to `cos'


要修复它,需要明确链接到匹配的库,在Makefile (看先前的例子)里增加一个-lm到LIB或LIBS标记。

用其他方法尝试

仍然失败如果失败,参考下列脚本:
make -DUseInstalled -I/usr/X386/lib/X11/config
这个直接方式的类别相当于。

在少数例子里,用root运行ldconfig可能会解决:
# ldconfig更新共享库链接符号。
一些Makefiles使用你系统里未被承认的库别名。一个例子,构建可能需要libX11.so.6,但是在/usr/X11R6/lib不存在文件或链接。然而,在那里是libX11.so.6.1。解决方法是用root运行ln -s /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/lib/libX11.so.6,接着需要运行ldconfig。

有一些包需要你安装一个或更多库的升级版本。需要拷贝一个或更多的库到适当的目录里,删除旧的库,重新设置动态链接库。

4:一些其他的问题处理

安装一个shell脚本如果出现:No such file or directory的错误消息。这是可以检查文件权限确定文件事可执行的,并检查文件头确定是否shell或程序是脚本在指定的位置被调用。一个例子,这个脚本可能是这样开始的:
#!/usr/local/bin/EDEN
如EDEN的实际安装位置是在你的/usr/bin目录,用一个/usr/local/bin替代
这个脚本不能运行有两个方法来纠正!!

A:文件头改成#!/usr/bin/EDEN

B:或增加一个链接符,ln -s /usr/bin/EDEN

5:一个典型的例子Xloadimage

   首先说明下面的例子来源于国外网站的一个技术实例,这里我做了翻译和整理。

这个例子展现一个简单的问题。xloadimage程序对我的图形工具的调整设置是有用的附加。从源码目录拷贝文件,用tar xzvf解压文件,可是在运行make的时候出现令人讨厌的错误并停止了。

gcc -c -O -fstrength-reduce -finline-functions -fforce-mem

-fforce-addr -DSYSV -I/usr/X11R6/include

-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c

In file included from /usr/include/stdlib.h:32,

                from image.h:23,

                from xloadimage.h:15,

                from mcidas.c:7:

/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:

conflicting types for `wchar_t'

/usr/X11R6/include/X11/Xlib.h:74: previous declaration of

`wchar_t'

make[1]: *** [mcidas.o] Error 1

make[1]: Leaving directory

`/home/thegrendel/tst/xloadimage.4.1'

make: *** [default] Error 2

这个错误消息包含了实质的线索:

查看image.h文件的23行:
#include <stdlib.h>
在源码的某处对于xloadimage, wchar_t已经在指定标准include文件重新定义。告诉我们首先在image.h的23行尝试注释它,或许stdlib.h include是不存在的,毕竟不是所有都是必需的。

在这点,构建中的收益来源于所有任何一个致命错误。xloadimage现在功能正常。

6:安装Linux包的一些总结
坚持自己动手处理所有的安装出现的问题,不断总结努力学习,从错误里去仔细研究,努力动手排错,从每个不足甚至失败的地方得到扩充和提升,可以增强安装构建软件的技巧。
分享到:
评论

相关推荐

    linux下安装mysql5.0.18(源码包)

    linux下安装mysql5.0.18(源码包)详解

    Linux下源码包安装Swoole及基本使用操作图文详解

    本文实例讲述了Linux下源码包安装Swoole及基本使用操作。分享给大家供大家参考,具体如下: 下载Swoole PECL扩展源码包:http://pecl.php.net/package/swoole 关于PHP版本依赖选择: 下载好放到/usr/local/src下,...

    nginx源码安装过程详解.doc

    首先Linux软件包大致可分为二进制包,源码包、使用的工具也各不相同。源代码包是没有经过编译的包,需要经过GCC、C++编译器环境才运行,二进制包无需编译,可以直接安装使用。怎么区分源码包,可以通过后缀简单区分...

    Linux 内核IPSec(xfrm)协议栈源码分析

    该文档从源码分析上入手分析了linux 内核收发数据包流程,内核路由查询流程。很清楚的分析了一个数据包如何通过查询路由进入内核ipsec协议栈的处理、Linux 内核ipsec协议栈详细的加解密流程以及加解密完后如何将...

    Linux服务器中安装多个MySQL5.6.26详解

    Linux服务器中已有程序使用低版本的MySQL,新程序需要使用高版本MySQL。...自己搞了三天,收集,试验,并整理了大量的相关信息,总算解决了第二个MySQL的安装,保证能用,而且源码包安装和二进制包的安装配置都支持哦。

    Linux 0.11源码及Linux内核完全注释文档

    包中不仅仅包含了Linux 0.11源码,而且包含了《Linux内核完全详解V1.9.5》和《Linux内核完全注释V3.0.0》,是一套完整的学习Linux的资料。

    linux应用程序开发详解(PDF+源码)

    linux应用程序开发详解),包含了《linux应用程序开发 》的(PDF+源码)很好的学习资料

    linux目录作用详解(超详细,树状排版)

    通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。 &lt;br&gt; ├proc/ 是一个假的文件系统。它不存在在磁盘某个磁盘上。而是由核心在内存中产生。用于提供关于系统的信息(originally about processes...

    ubuntu系统安装wireshark离线包,安装步骤详解以及遇到的问题解决方案

    ubuntu系统中使用离线源码安装包进行安装wireshark 安装详细步骤,以及安装过程中遇到的问题和解决方案

    LINUX 设备驱动开发详解 源码

    .....................\..\【转】container_of函数简介 - 嵌入式linux - 斯是陋室,惟吾德馨_files .....................\..\..................................................................\bg_art_bottom....

    嵌入式Linux应用程序开发详解

    7 1.2.3 安装准备 7 1.2.4 安装过程 8 1.3 Linux文件及文件系统 11 1.3.1 文件类型及文件属性 11 1.3.2 文件系统类型介绍 13 1.3.3 Linux目录结构 14 1.4 实验内容——安装Linux操作系统 17 本章小结...

    Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集

    linux0.11内核源码 # Linux命令大全搜索工具介绍 如果你是一个Linux系统的用户,你肯定需要经常使用Linux命令。但是,有时候你可能会忘记一个命令的具体用法,或者你需要找到一个新的命令来解决你的问题。在这种...

    Linux下Docker CE使用从包中安装的方式详解

    使用从包中安装的方式,在Linux上安装Docker CE 1.查看Linux系统信息nuame -a 我的是Debian, amd64 2.查看Linux 系统发行版的名称 lsb_release -cs 我的是stretch 3.进入到下载包页面...

    libusb 源码(win32 & linux USB开发)

     Libusb 的编译安装请查看Readme,这里不做详解  二 libusb 的外部接口  2.1 初始化设备接口  这些接口也可以称为核心函数,它们主要用来初始化并寻找相关设备。  usb_init  函数定义: void usb_init(void); ...

    Linux启动与自启动的实例详解

    RPM安装服务和源码包安装服务的区别就是安装位置的不同 源码包安装在指定位置,一般是/usr/local/ RPM包安装在默认位置上 以上就是Linux 中启动与自启动的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,...

    史上最强悍-15本最佳的Linux从新手到高手速成培训书籍集合

    史上最强悍-15本最佳的Linux从新手到高手速成培训书籍集合,让菜鸟新手迅速成为linux高手,15本最佳培训教材让你迅速掌握linux方方面面,从必备linux指令到安全搭建服务器到linux编程,一包在手,全部拥有!...

    详解Linux下安装php环境并且配置Nginx支持php-fpm模块

    这里下载最新版的php 7.0.5 的源码包:   下载下来之后上传至服务器 因为php安装需要编译,所以服务器应该保证gcc和g++环境的安装 首先释放安装包: tar -xvzf php-7.0.5.tar.gz cd php-7.0.5 接下来进行参数配置...

Global site tag (gtag.js) - Google Analytics