话说,终于搞定了在一套ubuntu里既能编译px4又能编译apm的问题

原创 2017年05月08日 10:48:57

这一篇算是对之前环境准备的总结,因为我发现即使是很熟练的开发者在选择开发环境的时候其实也蛮苦恼的…所以把现阶段部署开发环境的一些新的写出来,至少在这个时间点,现在大约是17年近中旬吧,按照我说的做,一定可以明明白白的把两套项目完整的最新固件都编译过去.

系统:
      ubuntu 16.10
交叉编译器:  
      gcc-arm-none-eabi-5_4-2016q2
      gcc-arm-none-eabi-4_9-2015q3
      waf(这东西是按照apm官网来的编译工具,我也是第一次用,反正看着效率还是编译速度蛮高的)
配置:
      dell precision 5520 i7 7820,东芝ssd,ddr4

  • px4的编译很简单,按照官网来,基本上是step by step.有一点要注意的就是我在选择交叉编译器的时候选了5.4版本,算是给自己挖了个小坑.

  • apm的编译一共出现了三个问题:

第一个是交叉编译工具的版本问题,仅最高支持到4.9.3,然而我之前配置px的时候盲目求新,所以需要解决ubuntu下不同交叉编译工具的版本切换问题,好在不是太麻烦.具体问题可以看这里解决

第二个问题还是编译问题,缺少pip添加的相关包,具体就是future库和lxml库,这个问题比较绕,因为一般报错的时候不是直接报的:

In file included from /home/tianqide42/apm/ardupilot/libraries/GCS_MAVLink/GCS.h:8:0,
                 from /home/tianqide42/apm/ardupilot/ArduCopter/Copter.h:38,
                 from /home/tianqide42/apm/ardupilot/ArduCopter/control_guided_nogps.cpp:1:
/home/tianqide42/apm/ardupilot/libraries/GCS_MAVLink/GCS_MAVLink.h:25:56: fatal error: include/mavlink/v2.0/ardupilotmega/version.h: No such file or directory
 #include "include/mavlink/v2.0/ardupilotmega/version.h"

他一般会报没有这个目录或文件,我忘了当时手动进目录去找的时候到底有还是没有了…好象是没有…

其实还有一个同样原因的错,我现在截不到了,是缺少引入的future库,这东西其实也是一个python相关的依赖库,本文后边我们就会知道需要用pip安装就好了.

所以我们就可以说:众所周知mavlink一般是由python相关的一些依赖库生成的某些相关编译的东西,那么总是要解决问题,那怎么解决呢,这个问题不管我在apm的托管页面上直接搜(就是在issues那里搜),还是在bing里或者stackoverflow里搜,其实结果差不多,具体可看这里或者这里

其实他们都出自这里,就是我之前博客说的要善用issuse,反正这阶段的问题在搜索引擎大海捞针的搜真的不好使了,在这里还能司马当作活马医.

解决办法也很简单,就是

pip install future lxml

如果你像我一样运气还十分的不好,可能还有这种问题:

OSError: [Errno 13] 权限不够: '/usr/local/lib/python2.7/dist-packages/_dummy_thread'

这个问题我的解决办法是直接加sudo

不过我看网上一般不推荐直接sudo pip,其实关于python我并不是十分了解为啥不能,今年我会进行一定程度的学习,将来说不定可以解释,我感觉这些应该都是很基础的问题,只是现在自己并不太了解.

安装的时候又双叒叕会报:

The directory '/home/tianqide42/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/tianqide42/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

真是一波三折啊…

其实也可以忽略,参考这篇博客

最后仔细看了下
sudo pip install requests
的报错信息
才知道要加上  -H



sudo -H pip install requests
这样就好了



-H, --set-home
                 Request that the security policy set the HOME environment
                 variable to the home directory specified by the target user's
                 password database entry.  Depending on the policy, this may
                 be the default behavior.
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )

因为我没这么做反正也编译成功了.

最后的问题是waf编译,如果之前pip没有安装future和lxml的话还是会类似的错,安装完之后就好了.

其实这些问题感觉都不是真正的编译,应该多涉猎一些常用语言或工具,比如python之类的,需要又一些其他知识,善用官方给的一些文档和问题搜索工具,比如这个issues等.

以上.

相关文章推荐

Ubuntu下编译 ardupilot

根据官方文档 http://dev.ardupilot.com/wiki/building-the-code-onlinux/ 先安装git ,  而后用 git clone下载源文件 1)下载源代码...
  • span76
  • span76
  • 2015年11月11日 17:45
  • 4281

Windows/Ubuntu操作系统下ArduPilot(APM)固件的编译方法

ardupilot(APM)的代码蛮好的嘛……

【APM】开发环境配置

安装PX4-toolchain什么是PX4-toolchain?px4-toochain是pixhawk官方为pixhawk在Windows下面的开发所配置的一系列工具软件,如整套的编译环境,一个类似...

PIXHAWK开发环境建立(固件编译)

阿木社区:玩也要玩的专业! http://www.amovauto.com/?p=842/ 目前有很多基于PIXHAWK的开发的无人机,业界对于APM/PIXHAWK也比较认可。我接下来就会写一系列...

Ubuntu操作系统下Pixhawk原生固件PX4的编译方法

在Ubuntu上搭建环境相对简单许多,按照PX4中文维基官网的教程即可。 工具链安装 权限设置 把用户添加到用户组 “dialout”(如果这步没做,会导致很多用户权限问题): ...

PIXHAWK开发环境搭建(基于Ubuntu14.04系统)

最近在研究开源飞控pixhawk,发现搭建linux下的开发环境的时候遇到一些比较奇怪的问题,今天在这里和大家分享一下。 我的linux是ubuntu14.04 64位版本,32位我也试过,没有问...

保证服务既能长期运行,又能调用服务里的方法的方案

保证服务既能长期运行,又能调用服务里的方法的方案: 步骤一:startService方式启动服务,会执行服务的onCreate方法和onStartCommand方法; 步骤二:bindServic...

UIScrollView上的UIButton,既能点击UIButton,又能滑动UIScrollView,但是点击UIButton时间短的话,不会高亮

最近做项目遇见一个问题:UIScrollView上有许多UIButton,要实现既能点击UIButton,又能滑动UIScrollView,这个实现没有问题,不需要做额外的touch管理,UIScro...

Windows / Ubuntu操作系统下Pixhawk原生固件PX4的编译方法

再也不怕PX4编译失败了……

Ubuntu环境下Pixhawk原生固件PX4的编译

Ubuntu下Pixhawk原生固件PX4的编译这个问题困扰了两天时间,可能是博主脑力不够,主要是环境搭建不起来,主要原因应该是路径的原因,最后在大师傅的帮助下还好成功将路径搭建好,成功编译。 下面就...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:话说,终于搞定了在一套ubuntu里既能编译px4又能编译apm的问题
举报原因:
原因补充:

(最多只允许输入30个字)