直接进入主题,今天被这个问题整得头皮发麻,主要网上还找不到类似的错误。
这个问题在于你用的arm-none-eabi版本出错了,以我在用的Ardusub为例,目前截至我写博客为止支持的是arm-none-eabi的6.3.1,也就是下面所示的版本
输入
arm-none-eabi-gcc --version
即可查看当前版本,正确的输出应该是
而我一开始是先安装的PX 4,后面再安装的APM,在安装PX4时由于网速问题没能直接从.sh方式直接安装arm-none-eabi,后面为了图方便就自己安装了,下载的是最新版本的。你可以用上面那个命令查看一下自己的默认版本(如果安装了2个的话)。下面这个是错的
如果安装了两个版本的话,就直接在/opt下把错的那个版本删掉就行了。
如果只安装了错误版本的,自己根据官方步骤来吧(看下面)。或者网速不行的同学可以自己另外下载,链接在这里。
所以说最好还是根据官方的安装不走来,这边还是简单说一下(主要还是怕自己之后忘记了)。以下内容仅针对Ubuntu系统
安装过错
可以自己去参考官网的步骤:
Setting up the Build Environment (Linux/Ubuntu)
基本
首先是下载源码并且更新子模块
git clone https://github.com/your-github-userid/ardupilot
cd ardupilot
git submodule update --init --recursive
执行下面这个语句安装必要的包(重要!)
Tools/environment_install/install-prereqs-ubuntu.sh -y
更新路径
. ~/.profile
然后运行
gedit ~/.bashrc
把下面这两段话放在文件末尾并且保存
export PATH=$PATH:$HOME/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH
然后执行一下
~/.bashrc
至此APM的工具链安装即完成。
Ardusub
这部分需要自己编译固件的同学可以看看,以Ardusub为例:
在编译ArduSub之前,首先将ArduSub-stable标记检出到新分支
git fetch --tags
git checkout ArduSub-stable -b new-branch
git submodule update --init --recursive
下述命令可以查看可搭配的命令,如可以查看支持的板子
./waf --help
对于Ardusub用户来说,一般用的也就是Pixhawk2.4.8的板子,那么对应的
./waf configure --board Pixhawk1
然后即可进行编译
./waf sub
固件创建于:
ardupilot/build/Pixhawk1/bin/ardusub.apj
上传如下:
./waf --upload sub
另外的错误解决
之前在解决了交叉编译器的版本错误之后,可以顺利进行编译了,但是在最后快成功的时候仍有报错
此时执行
rm -rf build/
清理build路径下的文件,重新进行编译即可
./waf configure --board Pixhawk1
./waf sub
成功后结果如下: