libjpeg的移植

          最近的体会就是做啥都不容易啊,解决问题的速度总是跟不上问题出现的速度。上一秒刚为解决一个问题而欢欣不已,下一秒就有个新问题冒出来让你头痛不已,还都是些细节问题,最难把握。


            因为之前做了会图像的压缩,用到了libjpeg库,所以安装了此库。我用的为jpegsrc.v9a.tar.gz 。刚开始安装到虚拟机ubuntu里。这个倒还容易。解压后,执行./configure 然后make ,(sudo)make install (如果没有指定自己的安装目录,就会安装到/usr/local/lib里,这就需要root权限)。使用时也简单,可以自己在Makefile里表明库的位置,也可以配置自己的环境能找到此库的目录就行,然后编译代码时加上-ljpeg就行。


       然而没想到坑就这样来了,我想把这个库移植到我的开发板上去,有一个MIPS和一个ARM的板子,因为之前已经安在ubuntu里面了,于是移植的时候就只是改了安装地址--prefix和CC ,然后使能静态链接和动态链接。没想到编译程序时一直不能通过,调了半天,又重新编译,加参数减参数都试过,然后看了看网上别人的,把别人的找过来也就是不能,后来我才发现,为啥交叉编译出来的库文件的格式是X86的,当时一脸懵13啊,然后又去看源码里的Makefile ,里面的是指定的交叉编译器啊。没办法,在绝望之余,我又开启一台虚拟机,然后解压,这次就直接奔交叉编译去:

     

./configure --prefix=/home/hehe/libjpeg_arm CC=arm-linux-gcc --host=arm-linux --enable-shared --enable-static
生成Makefile

(有的说要修改  AR= ar rc 改成  AR=arm-linux-ar rc 

                       AR2= ranlib 改成  AR2=arm-linux-/ranlib 

 奇怪的是,我这个Makefile里并没有AR2,到时有ranlib,不过我没改)

然后make

最后make install

怀着绝望的心情看了看file libjpeg.so.9.1.0     OK! 确实出来的是ARM版本的,然后copy过去就行

libjpeg.so.9.1.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped

哎~难道这个库一次只能编译一个版本?(开玩笑的,我也不知道,难道要make clean?),反正问题貌似就这样吧。


移植到MIPS上的话可以参考

#tar -xvf jpegsrc.v9a.tar.gz
#cd jpeg-9a
#./configure --prefix=$PWD/_install --exec-prefix=$PWD/_exec --enable-shared --enable-static
             --host=mips-linux CC=mipsel-linux-gcc AR=mipsel-linux-ar AR2=mipsel-linux-ranlib
#make
#make install

我用的是openWRT开发板。同样后面有些指令加不加看具体情况吧--我试了下,用--prefix、CC、--host、--enable-shared+static、--AR。然后进去改了ranlib。反正我用的这个版本是没有看到AR2的。编译出来的确实是MIPS格式。

哈哈  不知道接下来会有什么问题出现呢~~O(∩_∩)O


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值