Ubuntu16.04编译tensorflow官方Android demo

本文详细介绍如何从源代码编译TensorFlow,并将其部署到Android平台。包括下载TensorFlow官方代码、Android SDK与NDK,配置环境变量及编译过程等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下载tensorflow官方代码

git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git


2.下载Android SDK和Android NDK

Android SDK下载:在安装Android Studio时进行选择,

https://developer.android.com/studio/index.html?hl=zh-cn

Android NDK

下载地址:https://developer.android.com/ndk/downloads/older_releases.html

选择NDK r12b进行下载,高版本(r14b)目前编译可能报如下错误

tensorflow/core/kernels/BUILD:4542:1: C++ compilation of rule '//tensorflow/core/kernels:android_tensorflow_kernels'
 failed: clang failed: error executing command external/androidndk/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
 -gcc-toolchain external/androidndk/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 -fpic -ffunction-sections
 ... (remaining 73 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.


3.编辑tensorflow/WORKSPACE文件,取消部分注释后并填入sdk和ndk路径后如下

# Uncomment and update the paths in these entries to build the Android demo.
android_sdk_repository(
    name = "androidsdk",
    api_level = 26,
    # Ensure that you have the build_tools_version below installed in the
    # SDK manager as it updates periodically.
    build_tools_version = "25.0.2",
    # Replace with path to Android SDK on your system
    path = "/home/sc/Android/Sdk",
)
#
# Android NDK r12b is recommended (higher may cause issues with Bazel)
android_ndk_repository(
    name="androidndk",
    path="/home/sc/android-ndk-r12b",
#    # This needs to be 14 or higher to compile TensorFlow.
#    # Please specify API level to >= 21 to build for 64-bit
#    # archtectures or the Android NDK will automatically select biggest
#    # API level that it supports without notice.
#    # Note that the NDK version is not the API level.
   api_level=24)

build_tools_version参考Sdk下面build-tools文件夹名称,api_level为SDK对应的Android版本对应数字

好几分钟后,就会有编译成功的提示

Target //tensorflow/examples/android:tensorflow_demo up-to-date:
  bazel-bin/tensorflow/examples/android/tensorflow_demo_deploy.jar
  bazel-bin/tensorflow/examples/android/tensorflow_demo_unsigned.apk
  bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
INFO: Elapsed time: 394.902s, Critical Path: 56.04s

生成的apk文件位于bazel-bin/tensorflow/examples/android/文件夹下
 

<think>好的,我现在要帮用户解决在Ubuntu 16.04上安装Cartographer的问题。首先,我需要回忆一下相关的安装步骤,可能需要参考用户提供的引用资料。用户提到了三个引用,其中引用[2]是关于安装Cartographer ROS Integration的详细解析,看起来是主要的步骤来源。另外引用[1]和引用[3]可能涉及双系统安装和protobuf的版本问题,需要注意。 首先,Cartographer的安装通常需要ROS的支持,所以需要确认用户是否已经安装了ROS。根据引用[2],安装步骤中提到了使用wstool和rosdep,这些是ROS常用的工具。用户的问题是关于Ubuntu 16.04的,所以对应的ROS版本应该是Kinetic Kame。需要确保用户已经正确安装了ROS Kinetic,否则需要先完成ROS的安装。 接下来,安装依赖项。引用[2]中的步骤提到安装wstool、rosdep、ninja等工具,这部分需要详细列出命令。可能需要注意权限问题,使用sudo apt-get install命令。然后创建catkin工作空间,初始化wstool,并合并cartographer_ros的rosinstall文件。这里可能会有网络问题,需要确保能够访问GitHub的raw链接。 然后是安装protobuf。引用[3]提到protobuf的版本问题,官方安装手册的链接可能指向protobuf的安装说明。Cartographer可能需要特定版本的protobuf,比如3.0.0或更高版本。这里需要指导用户如何编译安装protobuf,可能需要从源码安装,避免系统自带的版本过低。步骤包括下载源码、配置、编译、安装,并设置LD_LIBRARY_PATH。 接下来是使用rosdep安装依赖包。rosdep init和update可能会遇到问题,特别是国内用户可能需要更换源或者使用代理。这里需要提醒用户可能的解决方案,比如修改rosdep的源或者使用镜像。 然后是编译Cartographer。使用catkin_make_isolated,这里需要指定--install --use-ninja参数,确保编译过程正确。编译完成后,需要source setup.bash文件,以便在终端中使用Cartographer相关的功能。 测试安装部分,建议用户下载官方数据集,运行demo,确保安装成功。同时,可能需要注意的问题比如protobuf版本不匹配,这时候需要检查是否安装了正确版本,环境变量是否设置正确。 在整个过程中,需要注意用户的系统环境,比如是否已经安装了必要的编译工具如gcc、make等,是否安装了ROS的完整桌面版。此外,依赖项的安装可能涉及到其他库,如ceres-solver,需要确认这些依赖是否已经正确安装。 可能用户会遇到的问题包括:网络问题导致wstool无法下载、protobuf版本冲突、rosdep初始化失败、编译错误等。需要针对这些常见问题给出解决方案,比如更换下载源、手动安装依赖、检查环境变量等。 最后,生成的相关问题需要考虑用户在安装过程中可能遇到的后续步骤,比如配置Cartographer参数、与其他SLAM库的比较、解决实时建图的问题,以及如何处理安装后的错误。这些问题可以帮助用户进一步使用Cartographer进行实际项目。</think>### 分步指南:Ubuntu 16.04 安装 Cartographer SLAM 库 #### 1. 系统环境准备 - **安装ROS Kinetic**: Cartographer需要ROS支持,建议安装完整桌面版: ```bash sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt-get update && sudo apt-get install ros-kinetic-desktop-full ``` - **初始化ROS环境**: ```bash echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` #### 2. 安装依赖项 ```bash sudo apt-get update sudo apt-get install -y python-wstool python-rosdep ninja-build libceres-dev ``` #### 3. 创建工作空间 ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws wstool init src wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall wstool update -t src # 若失败可手动下载代码到src目录[^2] ``` #### 4. 安装Protobuf 3.0+ Cartographer要求Protobuf ≥3.0.0: ```bash git clone https://github.com/protocolbuffers/protobuf.git cd protobuf git checkout v3.0.0 ./autogen.sh && ./configure --prefix=/usr make -j$(nproc) sudo make install export LD_LIBRARY_PATH=/usr/lib # 需写入.bashrc永久生效[^3] ``` #### 5. 安装ROS依赖 ```bash sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src -r -y # 可能需重复执行[^2] ``` #### 6. 编译安装 ```bash catkin_make_isolated --install --use-ninja source install_isolated/setup.bash # 需写入.bashrc ``` #### 7. 验证安装 运行官方测试数据集: ```bash roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag ``` #### 常见问题处理 - **Protobuf版本冲突**:通过`protoc --version`检查版本,若系统版本过低需卸载旧版 - **编译错误**:确认所有依赖项已安装,尝试清空`build_isolated`和`devel_isolated`目录后重新编译 - **ROS环境问题**:检查`.bashrc`中的ROS环境变量配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

upDiff

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值