64位系统中编译32位的opencv库

这两天真的有被项目折磨到,为了验证自己的一个想法,需要在64位的机器上使用32位的opencv的库。其实这个库可以通过apt去下载,但是我使用的系统中,用的软件可以依赖关系有点杂乱吧,导致我apt install的时候,无法直接安装。如果使用aptitude安装的话,又会移除一堆软件,再重新安装一大堆包,总之,看了让我心里没有底,怕影响到其它软件的正常运行。最后,就选择基于源码去编译。

一开始想法是通过在CMake的时候传入PLATFORM参数来进行设置,但是失败了。网上查了资料,没有找可用的方案。有个兄弟,使用的办法是再弄个32位的系统,然后将源码放到这个32位的系统中进行编译。因为我电脑上正好有23位的虚拟机,不过是ubuntu16的,而我目标系统是debian的。但是这个仁兄的想法,提醒了我,是不是可以基于32位的ubuntu16,去生成cmake的中间文件,然后基于这些中间文件,再到debian系统中去make?说实话,我自己都激动了,有这么好的idea。不过现实很打脸啊,我去调用的make的时候,竟然重新生成cmake那些中间文件了。所以,失败了。

中间又经过了一顿折腾,看cmake生成的打印信息,最后终于搞定了。记录一下需要修改的部分,如下所述:

1. 修改cmakelist.txt(opencv根目录下的CMakeList.txt)

2. 修改cmake下的文件(修改opencvCompileroptions.cmake和opencvdetectcxxcompiler.cmake)

3. 修改link.txt(因为默认链接了x86_64-linux-gnu下的libz.so,而这个文件是64位的。所以需要修改为连接/usr/lib/i386-linux-gnu下的libz.so)

4. 安装386的libz.so所在的安装包, 安装386的libpng-dev:i386,libtiff-dev:i386, libjpeg-dev:i386

修改完后,编译就通过了。

因为在windows下也需要用到32位的这个库,不过windows下用vs来实现这个功能,实在是太简单了,就不说了。有时候windows是真香

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值