如何在Linux下安装软件,以移植安装libjpeg解码库为例(总结)

  首先,从软件官方网站或者其它渠道获取安装软件源码包,选择所需软件版本,解压放到一个自定义目录下。安装Linux软件通常需要如下三个步骤:


步骤一:
  ./configure
xxx  ----------------------首先进行一些配置相关的设置,xxx为一些可选参数,例如指定安装目录,是生成动态库还是静态库等。如果没有选参数,则为默认设置,就如Windows安装软件一样,默认是通常会装在c盘下的固定目录下。这里主要生成makefile文件

步骤二:
  make
              ----------------------编译链接项目,主要是把源文件生成.o文件,然后生成一个可执行文件

步骤三:
  make install
     ----------------------安装,生成库文件,这里会将源码下生成的库文件、头文件等复制到安装目录下,如果有指定安装目录,则复制到安装目录下,没有指定安装目录下则在默认下,推荐自定义安装,因为这样容易找到安装目录,也使目录文件看起来整洁一些。




例程:安装libjpeg解码库


  libjpeg是一个开源的jpeg解码库,图像压缩算法写的非常好。
  首先:获取libjpeg解码库的源代码,移动复制解压到Linux目录下。源码下载地址https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/


  步骤一:进入源码目录,命令行输入:
    ./configure --prefix=/opt/my_jpeg --exec-prefix=/opt/my_jpeg --enable-shared --enable-static
  参数说明:
    '--prefix'是一个很常用的选项.制作出的'Makefile'会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分. 这里是指定安装目录/opt/my_jpeg;

    --exec-prefix与'--prefix'选项类似,但是他是用来设置结构倚赖的文件的安装位置.如果没有设置这个选项的话,默认使用的选项值将被设为和'--prefix'选项值一样.
    --enable-static:生成静态链接库。命名通常为.a文件
    --enable-shared:生成动态链接库。命名通常为.so文件

    动态库是运行时环境需要的,编译程序时不需要。静态库则是静态链接时才需要,动态链接时不需要。

    扩展:这里默认运行环境为本地Linux环境。如果安装软件支持多平台的话,要使用其它运行平台,比方说arm平台,则需要添加-host=arm,-build=i386来选择软件运行系统平台(平台版本不一样,参数可能也会有所不同),还需查看makefile文件检查设置的编译器是不是平台兼容的编译器,找到CC=gcc并改为CC=arm-none-linux-gnueabi-gcc,找到AR=ar rc并改为AR=arm-none-linux-gnueabi-ar rc,找到AR2=ranlib并改为arm-none-linux-gnueabi-ranlib。
    更多configure参数选项参考文章:http://www.chinaz.com/server/2009/0807/85792.shtml


  步骤二:源码目录下,命令行输入:
    make


  步骤三:源码目录下,命令行输入:
    make install
    这里会出现一个错误,提示没有找到文件夹,因为我们自己指定了安装目录/opt/my_jpeg,还没创建/opt/my_jpeg目录,创建好/opt/my_jpeg目录后,再make install,提示下一个错误:


       提示没有/opt/my_jpeg/include这个文件夹,这个文件夹是用来放一些头文件的,这里创建这个文件夹:

    mkdir /opt/my_jpeg/include
    继续make install,提示下一个错误:


    提示没有/opt/my_jpeg/lib这个文件夹,这个文件夹是用来存放库文件的地方,这里创建这个文件夹

    mkdir /opt/my_jpeg/lib
    继续make install,还会出现缺少/opt/my_jpeg/bin文件夹、/opt/my_jpeg/man和/opt/my_jpeg/man1文件夹,bin文件夹用来存放可执行文件,man1文件夹里面存放着一些说明手册,依次创建各个文件夹:
    mkdir /opt/my_jpeg/bin
    mkdir /opt/my_jpeg/man
    mkdir /opt/my_jpeg/man/man1
    继续make install,便可安装完成。


  安装完成之后,就可以进行代码测试了。使用制作好的动态或者静态链接库文件、安装目录下的头文件,需要导出库文件路径和头文件路径,不然编译会提示找不到路径。导出路径可以自定义,也可以直接复制库文件和头文件到系统默认已经导出的环境变量路径下(例如库文件可以放在/lib或者/usr/lib,头文件放在/include下,但是这样会不方便整理使用,推荐选择自定义导出环境变量路径)。

  通常在源码包里都会提供一个安装说明文档和软件使用说明文档(绝大部分是英文),如果移植一个软件,而网上又还没有人分享一些教程出来,我们看源码包提供的说明文档其实是最好的,也是最有参考意义的,毕竟这是原作者写的。其实,网上的那些的移植教程也是根据原作者提供说明文档修改的,只是把英文翻译成中文而已。看到一些英文文档,不要烦躁,要尝试去看,不会的单词可以借助一些工具查看,英文阅读能力和兴趣要慢慢地去提升,英文是绕不过的,跟英文过不去,不知不觉你会发现你跟别人差距会越来越大。