写在前面
第二章表明,arm-none-eabi工具虽然单独使用会报错,但是只要结合CMake就可以正常使用.
而Window系统下,使用CMake调用MinGW Makefiles,那么是不是可以在Linux下使用CMake调用Linux原生make(即Unix Makefiles)构建目标文件呢?这个问提就好比出发点相同(都是CMake),中间的路可能有区别(一个是MInGW Makefiles一个是Unix Makefiles),但最终目标一样(都是调用arm-none-eabi-gcc/g++进行编译),按照道理来说大同小异.这也符合CMake跨平台的特性.
这两种工具链架构如下图,绿色表示依赖的工具,黄色表示指令,白色的表示实际的文件.
首先是windows下的工具链结构
然后是Linux下的工具链结构
了解以上两个工具链关系之后,话不多说,我们正式开始.
本章所使用的工具和文件
工具/文件 | 版本 | 备注 |
---|---|---|
系统平台 | Ubuntu 18.04 | x86_64bit |
VScode | 任意版本 | 安装C/C++、Cmake和CmakeTools扩展(见第一章) |
cmake | 3.25.0 | 需要手动安装/升级(1) |
make(Unix) | GNU MAKE 4.1 | 输入make -v来查看,一般是系统自带 |
(交叉编译器)arm-none-eabi-gcc -v | gcc version 6.3.1 | 直接apt安装或者手动安装加入环境变量,apt安装版本较老,但更加方便且经验证可以正常使用 |
pico-sdk | github最新 | 一个文件夹,pico开发SDK,包含各种库和接口 |
(1)其中,由于数莓派pico sdk要求cmake最低版本为3.13,而apt install安装的版本是3.10,因此需要进行更新,否则会报错.更新的方法不是直接卸载,而是先下载最新版本并进行覆盖,加入虚拟链接.具体方法见下
https://blog.csdn.net/Boys_Wu/article/details/104940575?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166606737816782395333114%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166606737816782395333114&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-104940575-null-null.142v58new_blog_pos_by_title,201v3control_1&utm_term=ubuntu%20cmake%E5%8D%87%E7%BA%A7&spm=1018.2226.3001.4187
建立软连接的方法值得学习,即把解压到opt下的cmake文件夹中bin目录下的文件在usr/bin/下建立映射
sudo ln -sf /opt/cmake xxxx<version>/bin/* /usr/bin/
VScode配置
与第二章相同,安装CMake和CMakeTools插件,然后打开CMAkeTools插件进行配置
设置环境变量PICO_SDK_PATH为pico-sdk的下载路径,我这里是
Generator部分缺省空着就行,这是因为默认是Unix Makefiles,可以输入
cmake -help
进行验证
带星号的就是cmake的默认选项.
configure&build
配置完毕后,与第二章一样,选择编译器为arm-none-eabi然后进行configure,并build
圆满完成!