Linux ·

linux交叉编译libjpeg

1、下载libjpeg源码 http://www.ijg.org/files/

2、交叉编译 :

./configure CC=arm-linux-gcc  --host=arm-linux --enable-share(.so) --enable-static(.a)

3、添加到项目lib  修改makefile。

问题:

1、在下载v9,编译后,添加到项目。

编译报错:/usr/include/jmorecfg.h:162:14: error: conflicting types for ‘INT32’

原因:项目中你重复定义了 INT32 导致定义冲突,

2、运行是错误:Wrong JPEG library version: library is 90, caller expects 62

原因:可能是和linux版本和其他的依赖库的版本有要求,重新下载v6版本。解压 tar –zxvf  filename。

1、cd  jpeg-v6  2. ./configure CC=arm-linux-gcc --host=arm-linux  --enable-static

3、报错./libtoo    command  not founds

4、下载libtool 源码编译 :

./configure CC=arm-linux-gcc --host=arm-linux

(此处注意如果目标库是arm,  那编译库的依赖库也必行是arm的    后面会出现/usr/bin/ld: .libs/jcapimin.o: Relocations in generic ELF (EM: 40) 编译连接错误)

5、把编译好的libtool cp到jpeg-v6的目录下,网上还有要cp config.guess和config.sub 文件  我没有cp ,解压后jpeg-v6里面就包含了这连个文件。

6、然后重新编译jpeg 生libjpeg.a

总结:

1、运行平台对应的编译器去编译,目标库的依赖库必须要用相同的编译器。

2、查看帮助

./configure  --help
 ./configure CC=arm-linux-gcc  --host=arm-linux --enable-share(.so) --enable-static(.a)

3、当出现编译错误时要查看configure文件 和makefile文件

参与评论