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