Apollo-3.0本地编译

Apollo-3.0本地编译

  • 用docker编译所用的dev.x86_64.dockerfile文件(具体位置在apollo/docker/build)中有所有的依赖库或包, 还会执行一些shell脚本, 这些shell脚本主要存放在apollo/docker/build/installers文件中。

第一步,安装依赖库

  • 其实也就是按着dev.x86_64.dockerfile文件进行执行, 把RUN改为shell执行罢了。
    sudo apt-get update -y &&     sudo apt-get install -y     apt-transport-https     bc     build-essential     cmake     cppcheck     curl     debconf-utils     doxygen     gdb     git     google-perftools     graphviz     lcov     libblas-dev     libboost-all-dev     libcurl4-openssl-dev     libfreetype6-dev     liblapack-dev     libpcap-dev     locate     lsof     nfs-common     realpath     shellcheck     software-properties-common     sshfs     subversion     unzip     v4l-utils     vim     wget     zip 

第二步, 安装apollo第三方库

  • 其实就是把apollo/docker/build/installers文件夹下的shell脚本里面的命令执行一遍, 但要注意的是这些shell脚本都会删掉原始包,为了以防安装过程出错可以选择性的不删掉。
  • 值得注意的是bazel编译文件把依赖的库写到了本地目录/home/tmp, 所以需要自己创建这个目录并把一些第三方库的压缩包放到该目录下, 具体可以参看install_bazel_packages.sh目录:
mkdir -p /home/tmp
cd /home/tmp

wget -O opencv-2.4.13.2.zip     https://github.com/opencv/opencv/archive/2.4.13.2.zip
wget -O googletest-release-1.8.0.tar.gz     https://github.com/google/googletest/archive/release-1.8.0.tar.gz
wget -O gflags-2.2.0.tar.gz     https://github.com/gflags/gflags/archive/v2.2.0.tar.gz
wget -O glog-0.3.5.tar.gz     https://github.com/google/glog/archive/v0.3.5.tar.gz
wget -O benchmark-1.1.0.tar.gz     https://github.com/google/benchmark/archive/v1.1.0.tar.gz
wget -O eigen-3.2.10.tar.gz     https://bitbucket.org/eigen/eigen/get/3.2.10.tar.gz
wget -O civetweb-1.10.tar.gz     https://github.com/civetweb/civetweb/archive/v1.10.tar.gz
wget -O curlpp-0.8.1.tar.gz     https://github.com/jpbarrette/curlpp/archive/v0.8.1.tar.gz
wget -O yaml-cpp-0.5.3.zip     https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.5.3.zip
wget -O qp-oases-3.2.1-1.zip     https://github.com/startcode/qp-oases/archive/v3.2.1-1.zip
wget -O proj.4-4.9.3.zip     https://github.com/OSGeo/proj.4/archive/4.9.3.zip
wget -O tinyxml2-5.0.1.zip     https://github.com/leethomason/tinyxml2/archive/5.0.1.zip
wget -O protobuf-3.3.0.tar.gz     https://github.com/google/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz
  • 执行完这些脚本基本的环境就OK了, 如果出现一些错误, 一般google一下就能解决, 如果实现不能解决的可以参考docker里面apollo的环境, 具体进入命令为:
bash docker/scripts/dev_start.sh && bash docker/scripts/dev_into.h
  • 因为docker环境被映射到了本地目录, 可以把docker里面的一些库文件直接拷贝出来。
  • 依赖库和第三方库的版本最好和apollo中的保持一致, 库或包的版本太新或太旧都可能出现莫名其妙的问题;比如gflag的版本通过sudo apt-get install libgflags-dev安装的话, 就有可能出现gflag命名空间出错的问题。

第三步, 开始编译

  • 编译其实和在docker中编译没有太大的区别, 直接执行apollo.sh脚本就行, 但是要注意的是, 该脚本会检查是否是在docker环境下, 所以需要将function source_apollo_base()函数中check docker environment的if语句注释掉,具体为:
function apollo_check_system_config() {
  # check docker environment
  # if [ ${MACHINE_ARCH} == "x86_64" ] && [ ${APOLLO_IN_DOCKER} != "true" ]; then
  #   echo -e "${RED}Must run $0 in dev docker or release docker${NO_COLOR}"
  #   exit 0
  # fi

  # check operating system
  OP_SYSTEM=$(uname -s)
  case $OP_SYSTEM in
    "Linux")
      echo "System check passed. Build continue ..."

      # check system configuration
      DEFAULT_MEM_SIZE="2.0"
      MEM_SIZE=$(free | grep Mem | awk ‘{printf("%0.2f", $2 / 1024.0 / 1024.0)}‘)
      if (( $(echo "$MEM_SIZE < $DEFAULT_MEM_SIZE" | bc -l) )); then
         warning "System memory [${MEM_SIZE}G] is lower than minimum required memory size [2.0G]. Apollo build could fail."
      fi
      ;;
    "Darwin")
      warning "Mac OS is not officially supported in the current version. Build could fail. We recommend using Ubuntu 14.04."
      ;;
    *)
      error "Unsupported system: ${OP_SYSTEM}."
      error "Please use Linux, we recommend Ubuntu 14.04."
      exit 1
      ;;
  esac
}
  • 然后执行./apollo.sh build_cpu就可以愉快的编译了, 但是可能编译的时候会出现各种错误, 特别要关注那些错误提醒, 一般都是包没有安装完全, 将对应包放到对应目录下就可以了。

第四步, 错误修改

  • 运气好的话应该可以一次编译通过, 如果出现错误也不用慌,先弄清楚为什么出现这个错误(主要依据错误提示), 然后Google解决方案, 实在没有办法的话, 最直接的方案是把docker中的动态库拷贝到对应位置。
  • 以下是几个常见的问题:
    1. Bazel的安装版本太新, bazel官方安装教程, apollo编译用的是bazel-0.5.3,如果版本太新的话需要卸载后重新安装0.5.3版本。
    2. 一些计算库找不到头文件, 直接从docker里面拷贝即可,也可以先查清楚是那个计算库, 再安装即可。

      3.OpenGL库及其相关库没有安装, 需要安装glfw和glut等, glfw安装教程sudo apt-get install freeglut3-dev来安装glut。

    3. 没有显卡或是没有GPU也需要安装cudnn的库, 主要是在NVIDIA官方注册下载库(其实就是动态链接库和静态链接库的集合), 然后拷贝到放库的目录, 一般为/usr/local/lib中。
    4. 如果提示没有动态链接库, 可以通过sudo ld -l库名称 --verbose进行查看是否有对应的库, 有时候库的版本太多也不行, 需要卸载到不需要的版本。

原文地址:https://www.cnblogs.com/longjiang-uestc/p/10126301.html

时间: 2024-10-10 05:08:55

Apollo-3.0本地编译的相关文章

hadoop2.6.0本地编译,仅作学习记录

官网下载hadoop二进制文件,安装部署,可以成功,但是每次运行命令之前均会报错Unable to load native-hadoop library for your platform hadoop,经查明为官网提供的是32位,但实际生产环境中一般均需要64位,下面就结合网上资料,整理编译64位hadoop2.6.0 的步骤. 编辑环境为:redhat6.6 +jdk1.7+ hadoop-2.6.0-src.tar.gz 1.编译前准备 我的安装目录均在/usr/server/下,后面配置

QT5.6.0+VS2015编译MQSQL(ACCESS)X64数据库驱动

QT5.6.0+VS2015编译MQSQL(ACCESS)数据库驱动 1 说明 l 不建议QT5.6.0使用ACCESS数据库.如果想使用轻量级的数据库,可以使用Sqlite数据库. QT想要访问Access.SQL Server等数据库可以通过ODBC的方式来访问,但是QT较高版本已不提供ODBC驱动库,需要自己编译.QT5.6.0编译出来的数据库驱动是64位,但是不建议安装Access数据库,微软本身也不建议安装64位office. PS:为什么QT5.6.0不编译32位数据库驱动:编译数据

Android5.1和Android6.0定时编译项目方法 (转)

为了不占用开发的时间,我们通常会选择晚上下班后让项目自动编译,那么如何定时编译项目呢.Android5.1和Android6.0定时编译项目的方法是一样的,下面就我本地的C100H_V20(Android5.1)项目工程为例: 首先总体看一下工程下面都有那些文件: 然后打开你的编译脚本,里面的内容如下: [java] view plain copy #update svn cleanup svn up #compile chmod 777 -R ./ source build/envsetup.

【转】用串口登录Beaglebone Black、用usb共享电脑网络、内核模块的本地编译

原文网址:http://bbs.eeworld.com.cn/thread-431507-1-1.html 串口连接BBB使用usb线可以连接BBB和电脑,用ssh就可以登录BBB来进行操作.但有时候万一系统配置出现故障,或ssh用不了了,那就只能用串口连接了.首先要有一个串口转USB模块,用GND, TXD, RXD这三根线连接到板子上.具体连接方法见下图.<ignore_js_op> 理论上串口是随时都可以连接的,但我为了看到更全的输出信息,我在给BBB上电之前就先把它和电脑连好,在电脑端

被困扰了一个下午,求大神解答。VC6.0能编译通过,VS2013报错错误。

是一个与链表相关的代码,输入学生总人数及,每个学生的姓名成绩,并将输入的内容显示出来..VC6.0能编译通过,VS2013报错error C4703: 使用了可能未初始化的本地指针变量“p1”代码如下:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>typedef struct student{char name[15];int mark;struct student *next;}Node,*no

RHEL 7.0 本地配置yum源

RHEL 7.0 本地配置yum源  yum简介  yum = Yellow dog Updater, Modified 主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 当前linux版本 rhel7.0 前提mount DVD光盘到/mnt   因为配置时候路径名里面不能有空格,否则不能识别 首先设置IP地址.网关DNS 说明:RHEL 7.0默认安装好之后是没有自动开启网络连接的! cd  /etc/sysconfig/networ

redis3.0.2 编译安装 (启动服务方式启动)

1.基础环境介绍: 操作系统:Centos 6.7 redis版本:3.0.2 2.开始安装: 1)基础安装 参考链接:http://309173854.blog.51cto.com/7370240/1710655         [[email protected] ~]#yum -y install tcl         [[email protected] ~]# wget http://download.redis.io/releases/redis-3.0.2.tar.gz     

Ubuntu14.0上编译安装Hadoop

Ubuntu14.0上编译安装Hadoop 环境: hadoop-2.5.0.tar hadoop-2.5.0-src.tar jdk-7u71-linux-x64 protobuf-2.5.0.tar Maven3.0 安装步骤: 1 安装jdk ,配置环境变量 2 安装依赖包 3 安装maven 4安装protobuf-2.5.0.tar 5 编译Hadoop 6 安装hadoop 6.1 单机模式 6.2 伪分布模式 6.3 集群模式 1 安装jdk ,配置环境变量 下载jdk版本:jdk

vc6.0 点编译时提示Cannot complile the file &amp;#39;D:\souce-code\vc-workspace\对话框\MainFrm.h&amp;#39;; no compile tool is

问题描写叙述: vc6.0程序,点击编译时提示对话框,内容为: Cannot complile the file 'D:\souce-code\vc-workspace\对话框\MainFrm.h'; no               compile tool is associated with the file                                                                           extension. 解决方式: