• 用Eclipse和GDB构建ARM交叉编译和在线调试环境


    环境介绍

    • 主机:ubuntu 16.04 虚拟机
    • 板卡:hisi3559A

    安装Eclipse

    安装jdk

    sudo add-apt-repository ppa:openjdk-r/ppa  
    sudo apt-get update  
    sudo apt-get install openjdk-8-jdk 
    

    判断JDK是否安装成功:

    java
    javac
    

    安装eclipse、eclipse-cdt

    sudo apt-get install eclipse
    sudo apt-get install eclipse-cdt
    

    创建交叉应用工程

    在 Eclipse 主界面点击菜单 File > New > C/C++ Project,在弹出的“C/C++ Project”对话框中,输入项目名称。选择一个项目类型(如Executable/Empty Project),在 Toolchains 中一定要选** Cross GCC**,这是CDT对交叉环境的支持,提供了额外的功能,以方便嵌入式应用程序的开发。
    点击下一步,来到“Select Configurations”页面,我们采用默认,直接下一步,来到“Cross GCC Command”的设置。这里我们可以填写交叉编译工具链的交缀和路径,如:

    aarch64-himix100-linux-
    /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin
    

    上面的配置应该根据自己的实际情况进行。
    最后点击完成,一个交叉项目就创建好了。关于交叉编译前缀和路径的设置,在项目创建后,可以在项目的属性中改变它。

    测试

    #include <iostream>
    using namespace std;
    
    int main(int argc, char ** argv)
    {
        cout<<"This is a message !
    ";
        return 0;
    }
    

    点击构建,对它进行编译。编译后,我们可以在左侧的“Project Explorer”中,项目目录下的Binaries中看到编译出来的程序。把它拷贝到目标开发板上,运行,结果正确。

    搭建远程调试环境

    编译gdb 和 gdbserver

    首选需要编译gdb 和 gdbserver。可以参考:

    安装gdb-multiarch

    sudo apt-get install gdb-multiarch
    

    gdb添加C++ STL的打印支持

    开发板端准备

    将编译好的文件和gdbserver拷贝到开发板上,执行:

    ./gdbserver 192.168.199.101:1234 filename
    

    注意,192.168.199.101是主机的ip,filename 是可执行文件的名称。

    Eclipse设置

    在Eclipse中选择一个项目,点击菜单 Run > Debug Configurations,在左侧的Dubug类型中找到“C/C++ Remote Application”,右击点“New”,创建一个远程调试配置,如下图:




    之后就可以进行调试了。

    附录

    取消语法检查

    通常如果我们的都是使用makefile进行编译的,而Eclipse只是作为一个GUI调试工具,但是使用Eclipse打开源码时,侧边栏会提示很多的语法错误,取消这些显示的方法是:
    Windows->Perferces->C/C++:

    快捷键

    【F5】:跟踪到方法中,当程序执行到某方法时,可以按【F5】键跟踪到方法中。
    【F6】:单步执行程序。
    【F7】:执行完方法,返回到调用此方法的后一条语句。
    【F8】:继续执行,到下一个断点或程序结束。
    【F11】:调试最后一次执行的程序。

  • 相关阅读:
    IOS 开发者账号 (team账号)
    我能否把一个开发者帐号下的app转移到另一个开发者帐号下面?
    Xcode清楚缓存、清理多余证书
    CABasiAnimation的变化属性
    CATransform3DMakeRotation注意
    绘图详解(转摘)
    iOS开发UI篇—核心动画(UIView封装动画)(转摘)
    iOS开发UI篇—核心动画(转场动画和组动画)(转摘)
    iOS开发UI篇—核心动画(关键帧动画)(转摘)
    iOS开发UI篇—核心动画(基础动画)
  • 原文地址:https://www.cnblogs.com/chay/p/11605960.html
Copyright © 2020-2023  润新知