OsqpEigen编译——Unix版

OsqpEigen编译 —— Unix平台

1. 适用于Unix平台的代码修改

  • // MathLibrary.h
    #ifdef MATHLIBRARY_EXPORTS
    #define MATHLIBRARY_API __attribute__((visibility("default")))
    #else
    #define MATHLIBRARY_API
    #endif
    
    extern "C" MATHLIBRARY_API void call_solver();
    extern "C" MATHLIBRARY_API void call_ewma();
    extern "C" MATHLIBRARY_API void call_rewma();
    extern "C" MATHLIBRARY_API void call_dewma();
    extern "C" MATHLIBRARY_API void call_rdewma();
    
  • // 所有cpp文件(一共14个)
    1. 删除 dllmain.cpp 、framework.h
    2. 删除 pch.cpp 、 pch.h 
    
    // 剩下的10个
    3. 剩下的10个文件中的cpp文件
       注释掉首行的pch.h  
       //include"pch.h"
    

2. Unix环境配置

  • # 设置别名 ll
    su
    echo "alias ll='ls -la'" >> /etc/profile
    
    # 动态库环境变量设置(不指定位置安装时配置)(必须)
    vim /etc/profile
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    source /etc/profile
    
    # Unix必要安装包
    pkg refresh
    pkg install gdb
    pkg install cmake
    pkg install gcc
    

3. 上传代码

  • # Linux shell ———— user用户
    exit
    cd && mkdir test && mkdir projects
    
    # Windows shell
    scp -r C:\Users\yx140\Desktop\Unix\第三方库\* user@sun:test
    scp -r C:\Users\yx140\Desktop\Unix\Projects\* user@sun:projects
    

4. 编译第三方库

  • # 进入root模式
    su
    

1 Eigen

  • # 不指定位置安装(建议)
    cd /export/home/user/test/Eigen/Eigen3
    mkdir build && cd build
    cmake ..
    make install
    

2 OSqp(包含Qdldl)

  • # 将QDLDL的源码放到OSQP的lin_sys\direct\qdldl\qdldl_sources文件夹中,可同时编译这俩货
    # 不指定位置安装(建议)
    cd /export/home/user/test/Osqp/osqp
    mkdir build && cd build
    cmake -G "Unix Makefiles" ..
    cmake --build .
    cmake --build . --target install
    

3 OsqpEigen

  • # 不指定位置安装(建议)
    cd /export/home/user/test/OsqpEigen/osqp-eigen
    mkdir build && cd build
    cmake ..
    make
    make install
    

5. 手动编译

  • # 需手动编译!!
    # 编译 libMathLibrary.so
    cd /export/home/user/projects/MathLibrary && source /etc/profile
    g++ -shared -fPIC -o libMathLibrary.so solver.cpp ewma.cpp d_ewma.cpp r_ewma.cpp rd_ewma.cpp MathLibrary.cpp -I/usr/local/include -I/usr/local/include/osqp -I/usr/local/include/qdldl -I//usr/local/include/eigen3 -I/usr/local/include/OsqpEigen -losqp -lqdldl -lOsqpEigen
    
    # 复制
    sudo cp /export/home/user/projects/MathLibrary/libMathLibrary.so /usr/local/lib/
    
    # 编译 MathClient.out
    cd /export/home/user/projects/MathClient
    g++ MathClient.cpp -o main -I/export/home/user/projects/MathLibrary -lMathLibrary
    ./main
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值