前段时间在实际工作中遇到这样一个问题:
需要在linux下做一个动态链接库,需要具备jpeg解压功能,于是libjpeg是最好的选择;然而我们需求是要在没有安装libjpeg的机器上也能够运行起来,所以我们必须要静态的调用libjpeg。
在网上找了好久,都没有发现比较完整的介绍动态库中静态调用链接库LJPEG的文章,于是在这里稍微做个介绍,希望对需要的人有所帮助。
步骤如下:
1、我们需要下载libjpeg源代码,这个百度一下就能找到。
2、解压后cd到libjpeg目录在终端输入如下命令:
./configure --disable-shared
这样,加一个“--disable-shared”选项后,make的时候就只生成libjpeg.a文件而没有.so文件了,因为当动态库和静态库同时存在的时候系统会默认的调用动态链接库的。
3、修改libjpeg的makefile文件:
在makefile中找到“CFLAGS”项,在行末加上“-fPIC”
4、现在就可以编译libjpeg静态库了,直接输入命令:make;make install
5、在需要调用libjpeg的动态库源码的makefile.in文件中添加“-ljpeg”调用方式即可输入命令:./configure;make。
这样,我们就可以在自己的动态库中静态的加入libjpeg压缩和解压功能了,而且能够在没有安装libjpeg的机器上运行。
下面是几个关于libjpeg介绍的博客,可以参考下,写的蛮不错的: