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