【编译人生】使用configure配置jpeg库跨平台的通用编译方法

前言

jpeg库在为熟悉不过了,在ocr大为盛行的时代,跨平台编译此库是基本功。特别是需要编译leptonica,opencv等库时需要依赖或使用jpeg

本文将提示你如何使用qt的mingw32-make、VS以及msys2去构建windows或linux平台的jpeg动态链接库

目前最新版本是jpeg9.0一定下载最新版本的,否则个别平台会不支持,跨平台编译会有问题

tar xzf jpeg9e.tar.gz -C /usr/local
cd /usr/local/jpeg9e
#enable-shared 开启动态库编译
./configure --enable-shared
make
make install

执行到./configure –enable-shared一步时提示,这里是找不到libtool

checking host system type… Invalid configuration `x86_64-unknown-linux-gnu ‘: machine `x86_64-unknown ‘ not recognized
checking build system type… Invalid configuration `x86_64-unknown-linux-gnu ‘: machine `x86_64-unknown ‘ not recognized
configure: error: libtool configure failed

网上不少是把最新的libtool下的文件拷贝到jpeg目录下

cp /usr/share/libtool/config/config.guess .
cp /usr/share/libtool/config/config.sub .

其实是治标不治本。可以指定 LIBTOOL的绝对路径,libtool是一个负责包装生成库文件的框架,主要用于各类跨平台库生成

LIBTOOL

libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la的libtool文件打交道。

lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息
la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息

./configure LIBTOOL="/usr/bin/libtool"

如果需要指定特别平台的需要指定host和build,host是宿主机系统,build是需要构建的目标系统

#host打星号地方可写入指定平台x86_64-pc-msys 是windownt系统使用amd的CPU和msys2系统构建,默认使用libtool生成.a静态文件和.la动态文件
./configure --host=*** --enable-shared --enable-static --enable-lib64 --libdir=/usr/lib64
make
make install

如果想用qt的mingw32-make或vs去构建特别版本的jpeg库指定相应的host和build参数即可,同时需要指定make版本。

MAKE="mingw32-make"

你可能感兴趣的:(Compile,Guide,CSDN精华,linux,个人开发)