orbslam移植ios------macos编译suitesparse12

suitesparse源码下载
编译方式在github下面也有

1) 编译GraphBLAS(后来发现这个不需要装,这个是给matlab写的接口
在这里插入图片描述
这样只会生成.dylib文件,不会生成.a静态库文件
去掉前面的#,set(BUILD_GRB_STATIC_LIBRARY true)

默认安装在/usr/local/include和/usr/local/lib下面,需要将他们拷贝到suitesparse里对应的include和lib文件夹下面

2)编译metis
编译教程
在这里插入图片描述
我是
cd metis
sudo make config shared=1 cc=gcc prefix=/Users/zhangjianhua/Desktop/SuiteSparse/metis-5.1.0/metis上面那个安装目录是我自己定义的
sudo make
vim ~/.bashrc
然后写入export METIS_DLL=/Users/zhangjianhua/Desktop/SuiteSparse/metis-5.1.0/metis/lib/libmetis.dylib
sudo make install

然后把/metis-5.1.0/metis下面的include和lib文件开呗到suitesparse里对应的include和lib文件夹下面

3)编译cholmod
然后cd cholmod
直接make

  1. 编译metis报错cannot find source file GKlib/conf/check_thread_storage.c
    解决办法
    把第4行
    set(GKLIB_PATH “GKlib” CACHE PATH “path to GKlib”)
    换成
    set(GKLIB_PATH “${CMAKE_SOURCE_DIR}/GKlib” CACHE PATH “path to GKlib”)

  2. 问题2:编译出来的dylib库和.a静态库,模拟器可以编译成功,但是ios真机编译还是会有问题,还是链接错误
    直接测试一下,编译生成的静态库文件,是否模拟器和真机可用
    模拟器的架构是 i386 或者 x86的
    真机上的架构是 armv7 或者arm64的

    lipo -info libcholmod.a
    输出只有x86_64,果然

    后来我又在github上找了另一个人的suitesparse,他的已经提前预编译生成了.a静态库文件,lipo -info了一下,只输出arm64,然后我再将这个版本的.a静态库文件和之前版本的静态库文件结合了一下
    lipo -create sim/libcholmod.a ios/libcholmod.a -output stage/lib/libcholmod.a

结果,出乎人意料,仍然只是模拟器编译通过,ios编译仍然失败。但是,后来我突然意识到,模拟器编译通过,因为在编译 suitesparse的时候,必须制定blas和lapack的位置,然后我顺手导进去了blas和lapack静态库文件到我的工程项目里面,这么凑齐的情况下才在模拟器下编译成功的。然而,我导的blas和lapack静态库文件是x86_64架构(这个是模拟器需要的架构)的,不支持arm64(这个是ios真机需要的架构),所以导致真机一直跑不起来

后面后知后觉,发现报的错大部分都是_blas开头这种形式的

然后github上找了找blas ios版的静态库,这个很容易找,导进去之后,错误一下子从13个变成了2个,但是lapack ios版的静态库很难找

那剩下的两个错分别是这两种形式: “zpotrrf”“dpotrf
网上直接搜,果然是lapack里面的
在这里插入图片描述
本来一直卡在去找lapack ios版的静态库文件,但是真的很难找,而我自己本身水平很菜,只会通过xcode编译一下g2o这种的ios版的静态库文件,像boost编译ios版的静态库文件,都是看网上有人给了脚本,跑的

找不到lapack ios版的静态库文件,就计划自己动手 丰衣足食,改一改boost脚本,给lapack用,但是报了一堆错,解决不了

最后终于在网上查,发现Accelerate.framework包含了blas和lapack这两个库文件,只要导一下这个就可以了

所以我弄了一周的东西,最终竟然如此容易解决

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值