在linux下安装源码的步骤

caocao1年前教程216

在Linux下安装源码的步骤

在Linux下安装软件时,有时会遇到需要进行源码安装的情况。虽然只需要简单的三个步骤:./configuremakesudo make install,但这却让很多人感到头疼。在这里,我将以安装X11为例,详细介绍一下我在安装过程中的一些小经验,希望能够共同学习和进步!

首先,我们需要做一些准备工作。源码安装少不了几个工具,包括pkg-configlibtoolautoconfautomake(当然,还有一些更基础的工具,比如zlibm4等,这里就不详细介绍了)。其中,pkg-config是比较重要的工具,它用于向configure程序提供系统信息,比如软件版本、库版本以及库路径等信息,这些信息仅在编译期间使用。你可以打开/usr/lib/pkgconfig目录下的任意一个.pc文件,就会发现类似下面的信息(以X11的.pc文件为例):

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
xthreadlib=-lpthread
Name: X11
Description: X Library
Version: 1.3.3
Requires: xproto kbproto
Requires.private: xcb >= 1.1.92
Cflags: -I${includedir}
Libs: -L${libdir} -lX11
Libs.private: -lpthread

configure程序就是依靠这些信息来判断软件版本是否符合要求的。接下来,让我们看看pkg-config是如何工作的。默认情况下,pkg-config首先在/usr/lib/pkgconfig/目录中查找相关包(比如x11)对应的.pc文件,如果找不到,它还会在PKG_CONFIG_PATH环境变量所指定的路径下查找。如果还是找不到,它就会报错。因此,我们可以通过以下方法解决在configure时提示“库未找到”的问题:首先使用命令ldconfig -p | grep 库名来分析该库是否已安装及其路径,如果返回为空,则说明该库确实未安装;否则,可以根据该命令的返回结果找到库的安装位置,然后设置其环境变量,命令如下:

export PKG_CONFIG_PATH=软件位置/lib/pkgconfig:$PKG_CONFIG_PATH

需要注意的是,安装软件后,.pc文件通常位于安装目录下的lib/pkgconfig中。这样设置的环境变量只在当前命令窗口中有效。当然,你也可以修改home文件夹下的.bashrc文件(.bashrc是一个隐藏文件,可以使用命令vi .bashrc进行编辑),在文件末尾添加上述命令,然后重新登录即可。对于其他几个工具,在Linux下同样是必不可少的。libtool用于管理库文件,在未安装时会出现错误提示:possibly undefined macro: AC_PROG_LIBTOOL。而autoconfautomake可用于在某些没有configure的源码包安装时使用(比如pixman就是一个典型的例子,安装了这两个工具后,直接运行./autogen.sh即可进行安装)。

准备工作完成后,就可以开始安装了。以下是具体的命令:

tar vxf libX11-6.2.1.tar.gz
cd libX11-6.2.1
mkdir X11-build
cd X11-build
../configure –prefix=/usr/local/X11R6
make
sudo make install

这里有一些良好的安装习惯可以积累:1、建立一个临时编译目录,本例中为X11-build,这样在安装完成后可以删除该目录,以节省空间,并保持源码目录的整洁;2、最好将安装目录指定在同一个文件夹下,本例中为/usr/local/X11R6,这样有几个相关的安装文件可以放在同一个文件夹中,便于管理。否则,默认情况下,所有文件都会安装在/usr/local下,显得杂乱无章;3、在编译完成后进行检查,本例中使用了echo $命令,表示检查上一条命令的退出状态。如果程序正常退出,返回值为0;如果错误退出,返回值为非0。也可以使用make check命令,主要是为了防止在make失败后直接进行install,从而避免出现一些莫名其妙的错误。此外,还有一种更方便快捷的安装方法,即使用&&将安装命令连接起来,例如../configure –prefix=**&&make&&sudo make install。这样,只有在前面的命令执行正确的情况下,后面的任务才会执行,非常方便!

除了上述内容,安装之前可以阅读源码包中的readmeinstall等文档,通常会提供所需软件及其下载地址,还包括一些安装技巧和配置选项。此外,在运行configure之前,可以先输入configure --help命令,查看可添加的选项。还有几个与安装成功相关的东西,例如ldconfig。如果在安装过程中提示找不到某个库,或者在编译时提示找不到*.so文件,就需要用到它了。最简单的解决办法是使用sudo gedit /etc/ld.so.conf命令,在文件中添加*.so文件所在路径,然后运行ldconfig命令即可。不过,我对这个东西有些阴影,不知道是因为使用了虚拟机还是其他原因,有7、8次在运行完ldconfig后,Ubuntu就无法打开任何窗口,甚至无法进入系统,非常崩溃。不知道是否有高手能够提供解决办法。在这里,我提供一种替代ldconfig的方法,即使用export LD_LIBRARY_PATH=*.so文件地址:$LD_LIBRARY_PATH命令。使用这种方法,我感到更加安心,尽管稍微麻烦一些,但总比系统崩溃要好得多,呵呵!实

相关文章

Kali Linux安装

Kali Linux安装

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 1. Kali Linu...

Visual Studio运行Python程序(超级详细)

Visual Studio运行Python程序(超级详细)

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 本节将继续以第一个Pyt...

夜神模拟器使用termux安装Ubuntu系统

夜神模拟器使用termux安装Ubuntu系统

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 文章目录 我想学习Lin...

fbinsttool.exe使用说明—如何用FbinstTool制作启动优盘?

fbinsttool.exe使用说明—如何用FbinstTool制作启动优盘?

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 fbinsttool.e...