ARM64交叉编译OSQP库
准备工作
交叉编译
1.打开cmake图形界面
cmake有图形界面,WIN系统可以从开始界面找到。
2.配置编译
- 在 Where is the source code: 栏,寻找到OSQP的根目录。
- 在OSQP根目录下,新建一个build文件夹。
- 在 Where to build the binaries: 栏,寻找到build文件夹的路径。
- 点击configure,弹出如下窗口:
- 如果是主机是WIN系统,选择MinGW Makefiles;如果是Linux系统,选择Unix Makefiles。
- 下面四个选项选择Specify options for cross-compiling
- 点击Next,弹出窗口:
-
填写Operating system 目标系统,如果目标没有系统,填写generic。 -
Compilers C/C++ 填ARM交叉编译工具链的gcc和g++路径。 -
Target Root填工具链的根目录,其他都选Search only in Target Root。 -
点击Finish。 -
出现错误(缺少make的路径),点击Add Entry,Name填CMAKE_MAKE_PROGRAM,Type选FILEPATH,Value填make.exe(WINDOWS)的路径,点击OK。 -
这时会出现两个相同的CMAKE_MAKE_PROGRAM项目,有一个是空的,要再设置一次路径,不知道为什么。 -
勾选Advanced。 -
再次点击Configure,出现如下错误:
- 需要将所有的值为CMAKE_DLLTOOL-NOTFOUND的条目能填的都填上,比如CMAKE_C_COMPILER_[…] 和CMAKE_CXX_COMPILER_[…] 之类的。
- 添加项目CMAKE_TRY_COMPILE_TARGET_TYPE,类型为STRING,值为STATIC_LIBRARY。
- 点击Configure,如果输出Configuring done则成功。
- 点击Generating,如果输出Generating done则成功。
因为我是跑在板子上,所以有些东西不需要,去掉了一些勾选,如上图一样。
如需改动,可以把build文件夹清空,再重新Configure和Generating
接下来是对OSQP中的一些改动:
- 在
osqp\lin_sys\lib_handler.h ,注释10-11行的两个linux头文件。 - 在
osqp\CMakeLists.txt ,注释21-30行的操作系统相关,注释358-359行的osqp_demo相关。 - 在
osqp\lin_sys\CMakeLists.txt ,注释16-21行linsys_lib_handler相关。 - 在
osqp\lin_sys\direct\qdldl\qdldl_sources\CMakeLists.txt ,注释129-148行的qdldl shared library相关。参考 - 在build文件夹中打开终端,输入cmake --build . 进行编译。
在osqp\build\out 中生成了libosqp.a 静态库。
|