JPEG库移植

第三方源码编译

Linux平台下有许多开源的第三方库和服务,这些开源代码一般都符合GNU-autotools编码规范,可以使用所谓 “三步曲” 来统一进行配置、编译和安装,如下:

1.配置:根据当前平台的具体情况,生成 Makefile 文件

gec@ubuntu:~$ ./configure

注意:

  • 默认安装到 /usr/local 下,可以通过 --prefix= 来指定安装路径
  • 默认使用的编译器是gcc,可以通过 --host= 来指定特定编译器的前缀

2.编译:根据生成的Makefile文件,指导当前平台的编译器编译所有的源码

gec@ubuntu:~$ make

3.安装:将编译和配置好了的库文件、头文件等内容统一存储到指定的位置

gec@ubuntu:~$ make install

在以上三个固定的步骤中,第一步配置一般来讲需要根据具体情况指定不同的配置参数,可以使用其自带的 --help 指令查看帮助信息,例如:

gec@ubuntu:~/jpeg-9a$ ./configure --help
Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  ...
  ...

每种不同的源码包所支持的配置参数都不尽相同,但有一些是比较通用且常用的,比如如下两个参数:

gec@ubuntu:~$ ./configure --prefix=/home/gec/jpg --build=arm-linux

解释:

  • –prefix 用来指定安装路径,若没指定则默认是 /usr/local
  • –build 用来指定编译器默认前缀,若没有指定则默认是 gcc/g++

JPEG库的交叉编译

JPEG(或称JPG)是一种图片格式,由于其先进的编码算法,兼具了低失真率和高压缩率,成为日常网络中最常见的图片格式。

libjpeg.so(源码)是典型的Linux下第三方开源库,专用于对JPG格式图片进行编解码,其编译过程符合典型的三步曲,具体如下:

官方网站
jpegsrc.v9d.tar.gz

下载完了之后,放到 Linux 系统中解压,值得注意的是,最好在家目录(:~/)下解压和编译、安装,不使用管理员权限,不使用 sudo ,否则很可能会导致后续的操作由于权限问题而出错。

2.1 操作步骤:

  • 把压缩包jpegsrc.v9d.tar.gz复制到 Ubnuntu 的家目录中
  • 在家目录中创建一个用于安装jpg解码库的文件夹 Jpeg
  • 对压缩包jpegsrc.v9d.tar.gz进行解压 tar -zxvf jpegsrc.v9d.tar.gz -C ~/jpeg-v9d
  • 解压后得到一个目录 jpeg-9d 使用cd命令进入该目录

接着,在源码目录下进行经典的源码编译三部曲:

  • 配置: ./configure

  • 编译: make

  • 安装: make install

  • 三部曲中第一步,配置编译规则

    • 指定安装路径:--prefix=
    • 指定工具链前缀:--host=
    • ./configure --prefix=~/jpeg-v9d/install --host=arm-linux
    • 配置完成后检查 checking whether we are cross compiling... yes 如果不是yes尝试重新执行配置选择项(更换路径尝试)
  • 三部曲的第二步 编译

    • make 等待编译结束即可
  • 三部曲的第三步 安装

    • make install
目录
posted @ 2025-11-14 08:38  林明杰  阅读(1)  评论(0)    收藏  举报