OsqpEigen编译——Linux版

OsqpEigen编译 —— Linux平台

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

  • // 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. Linux环境配置

  • # 动态库环境变量设置(不指定位置安装时配置)(必须)
    vim /etc/profile
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    source /etc/profile
    
    # Linux必要安装包
    apt install gdb
    apt install cmake
    apt install build-essential
    

3. 上传代码

  • # Linux shell
    cd && mkdir test && mkdir projects
    
    # Windows shell
    scp -r C:\Users\yx140\Desktop\Linux\第三方库\* root@node1:test
    scp -r C:\Users\yx140\Desktop\Linux\Projects\* root@node1:projects
    

4. 编译第三方库

1 Eigen

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

2 OSqp(包含Qdldl)

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

3 OsqpEigen

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

5. 手动编译

  • # 需手动编译!!
    # 编译 libMathLibrary.so
    cd /root/projects/MathLibrary
    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 /root/projects/MathLibrary/libMathLibrary.so /usr/local/lib/
    
    # 编译 MathClient.out
    cd /root/projects/MathClient
    g++ MathClient.cpp -o main -I/root/projects/MathLibrary -lMathLibrary
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值