详解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内核源码包的安装及编译 在深入探讨如何进行Linux内核源码包的安装与编译之前,我们先明确几个关键概念: - **Linux内核**:是Linux操作系统的核心部分,负责管理和调度系统资源。 - **源码包**:包含了...
### Linux源码包制作详解:从零开始到成品 在Linux环境下,源码包的制作是一项重要的技能,尤其对于开发者和系统管理员来说。通过本文,我们将深入探讨如何从头开始制作一个Linux源码包,以“helloworld”程序为例...
本文将详细介绍如何在Linux环境中通过源码包安装Swoole扩展,并提供基本使用操作的图文教程。 首先,需要从PECL扩展源码包中下载Swoole的源码包,下载地址为***。在下载之前,要确认PHP的版本,以确保选择合适版本...
### Linux下源码安装MySQL数据库知识点详解 #### 一、准备工作与环境搭建 在Linux环境下进行MySQL数据库的源码安装前,需要准备一系列的基础工作,包括但不限于创建必要的目录结构、设置用户权限以及安装所需的...
《Linux设备驱动开发详解——基于最新的Linux4.0内核》是一本专注于嵌入式Linux系统中的设备驱动程序开发的专业书籍。这本书的核心内容是讲解如何为Linux操作系统编写和理解设备驱动,以实现硬件与操作系统之间的...
这份"linux编程技术详解源码"提供了丰富的实践示例,帮助我们深入理解这些概念。以下将详细介绍其中涵盖的一些关键知识点。 1. **系统调用**:Linux编程的基础是系统调用,它们是操作系统提供给用户程序的接口。...
《Linux设备驱动开发详解-基于最新的Linux4.0内核》是一本深入讲解Linux设备驱动程序开发的专业书籍,源码.zip文件包含了与书中的讲解密切相关的代码示例。Linux驱动开发是连接硬件与操作系统内核的重要桥梁,对于...
在学习"Linux设备驱动开发详解"的过程中,可能会涉及以下几个关键知识点: 1. **内核模块编程**:了解如何编译和加载内核模块,以及如何在模块中实现设备的注册和注销。 2. **设备文件系统(DevFS)和sysfs**:...
总的来说,Docker源码编译安装是一个复杂的过程,需要对Linux环境、Go语言以及Docker的工作原理有一定的了解。这个过程不仅有助于你掌握Docker的内部机制,也有助于你在开发自定义Docker功能或修复问题时能够更有效...
《util-linux源码详解》 在Linux操作系统中,util-linux是一个极为重要的软件包,它包含了大量用于系统管理和维护的实用工具。此包以其丰富的功能和广泛的适用性,成为了Linux开发者和系统管理员不可或缺的工具集。...
《Linux编程技术详解》一书,作者杜华老师,旨在帮助读者掌握Linux环境下的编程技巧和实践方法。这本书可能涵盖了以下几个主要方面: 1. **系统调用**:Linux编程的核心是系统调用,它是应用程序与操作系统交互的...
本文将详细介绍如何在Linux环境下使用源码包安装Nginx及其相关依赖库的方法,同时也会对比两种不同的安装策略:动态链接与静态链接。 #### Nginx安装概述 Nginx是一款高性能的HTTP服务器和反向代理服务器,广泛...
总的来说,RhythmCat播放器是Linux平台上的一个强大音乐播放解决方案,它的源码分析和编译过程为开发者提供了深入理解多媒体处理和图形用户界面设计的机会。无论是对音频播放器有兴趣的普通用户还是希望进行二次开发...
"nxp源码(官方原版uboot以及linux源码)" 这个标题指明了我们正在处理的是与NXP公司相关的开源项目源代码,其中包括两个关键部分:U-Boot和Linux内核。NXP是一家全球知名的半导体公司,尤其在嵌入式处理器和微控制...
### Linux 下安装 MySQL 5.0.18(源码包)详解 #### 安装前准备 在开始安装 MySQL 5.0.18 的源码包之前,需要确保你的 Linux 系统已安装了必要的编译工具,如 GCC 和其他依赖库。通常情况下,可以通过以下命令来...
《Linux设备驱动开发详解-基于最新的Linux4.0内核》是一本深入讲解Linux设备驱动程序开发的专业书籍,配套代码存放在"learn-ldd-master-main"这个压缩包中,旨在帮助开发者理解并掌握在嵌入式Linux系统上编写驱动...
在探索"Linux源码.zip"之前,让我们先从基础知识开始。 Linux的基础概念始于它的起源。Linux是由芬兰程序员林纳斯·托瓦兹在1991年创建的一个开源项目,其核心是操作系统内核。Linux内核是系统的核心部分,管理硬件...
Linux 0.12源码是Linux操作系统早期版本的代码,对于理解操作系统的底层工作原理、内核架构以及系统调用等核心概念至关重要。Linux 0.11源码分析PDF则是对这一早期版本源码的详细解读,帮助开发者深入学习Linux内核...
### LAMP源码包安装详解(CentOS 5.5 版本) #### 一、基础知识简介 在深入了解具体的安装步骤之前,我们首先简要回顾一下LAMP的基本概念及其组成部分。 **LAMP**是一个开源软件堆栈,由四个主要部分组成:**...