cygwin编译ardupilot提示“错误:’H_MAG[16]’ … 有些警告被当作是错误” 或者 “task in ‘objs/AP_NavEKF2’ failed ”
上述两种报错都是由于cygwin64环境内部使用了较新的gcc导致的,这时会出现编译实物固件时可以编译成功,但是仿真时不行,这是由于仿真时是使用cygwin64环境内部的gcc,而编译实物飞控固件时使用的是我们建立编译环境时单独安装的那个gcc。
解决方法很简单,将cygwin64环境内的gcc版本号降级即可,步骤如下:
(1)下载cygwin64安装工具:https://cygwin.com/setup-x86_64.exe,下载后的文件名为“setup-x86_64.exe”;
(2)双击它,然后一路点击“下一步”,如果中途出现“Could not download mirror sites list”,点击“确定”即可;
(3)出现下图所示窗口后,在“User URL”后面的框里输入下面的链接,然后点击“Add”按钮,然后选中刚添加的链接,再点击“下一步”;
http://mirrors.163.com/cygwin/
4)在下图窗口中,先将“View”从“Pending”改为“Full”,然后在Search框中输入“gcc”,之后在搜索出的列表中将“gcc-core”、“gcc-g++”、“libgcc1”三个包的版本号改为“9.3.0-2”,之后一路点击“下一步”到结尾即可;
(5)最后弹出的窗口中,勾选“Create icon on Desktop”和“Add icon to Start Menu”,然后点击“完成”。至此,问题解决。
以上教程来自于怒飞垂云无人机知识库