Linux系统下编译Android可用的jpeg动态库与静态库
弄了好几天,今天终于成功编译出jpeg的动态库和静态库,这里我记录一下具体的操作
一、下载jpeg源码包
1.通过wget指令,下载jpeg源码包,得到文件 jpegsrc.v9c.tar.gz
wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz
2.解压jpegsrc.v9c.tar.gz,得到一个文件jpeg-9c,这里面都是jpeg的源文件
tar xvf jpegsrc.v9c.tar.gz
3.进入jpeg-9c的文件夹中,查看配置的帮助文档
./configure --help
这里包含了所有的配置信息,例如下面,前面是配置字段,后面是说明,稍后我会介绍几个我用到的配置参数
二、设置配置参数
我已经下载好NDK了,下载的方法自行百度了~,也比较简单,我就不赘述了,下面是配置的执行代码
./configure --prefix=/root/test/jpeg-9c --host=arm-linux-androideabi CC="/root/linux/android-ndk-r17b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/root/linux/android-ndk-r17b/platforms/android-21/arch-arm -isystem /root/linux/android-ndk-r17b/sysroot/usr/include/ -isystem /root/linux/android-ndk-r17b/sysroot/usr/include/arm-linux-androideabi" CFLAGS="-D__ANDROID_API__=21"
(1)--prefix:动态库及头文件生成的目录,生成如下四个文件夹,include中是头文件,lib中有生成的动态so库及静态a库
(2)--host:构建的动态库及静态库在哪种CPU架构上运行,这里我写的arm-linux-androideabi,在armeabi-v7a的CPU上运行
(3)CC:前半句指定了编译器,这里我写的是NDK中的编译器;之后的--sysroot与-isystem指定了头文件的查找路径
(4)CFLAGS:这个一定要注意,如果使用的AndroidNDK的编译器,NDK版本小于等于15这个可以不写;如果大于15需要写上这句代码,指定运行的Android版本号,否则会报 undefined reference to ‘stderr’类似的这种错误
1.如果执行成功会有如下的提示
2.之后输入make指令
make
有类似如下的输出,表示成功
3.之后输入make install指令
make install
输出如下,表明成功
执行成功之后就会在--prefix指定的路径中生成相应的文件,具体怎么在Android中使用这些静态库和动态库,百度一下你知道,我这里只介绍一下jpeg的编译过程~
欢迎留言,欢迎纠错~