搜索
bottom↓
回复: 74

【网友经验分享】Ubuntu12.10环境下i.MX6 linux Eclipse GDB远程调试

  [复制链接]

出0入0汤圆

发表于 2014-9-16 19:45:30 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_Rita 于 2014-10-8 17:37 编辑

看完此文章,你将能够在主机Ubuntu12.10中调试开发板中运行的程序。
包含要点:
1. Ubuntu12.10 Eclipse安装
2. Eclipse C/C++开发
3. 交叉编译
4. GDB远程调试i.MX6开发板


1. 安装JDK
1)Eclipse基于java,首先需要安装JDK,在官网下载最新的JDK8u20。
http://www.oracle.com/technetwor ... nloads-2133151.html


2)解压文件
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-8u20-linux-i586.tar.gz /usr/lib/jvm/
$ cd /usr/lib/jvm/
$ sudo tar -zxf jdk-8u20-linux-i586.tar.gz
$ rm ./jdk-8u5-linux-i586.tar.gz
3)配置java运行环境变量
$ sudo vi /etc/environment
在environment中修改PATH,追加JDK路径,添加CLASSPATH与JAVA_HOME后如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/jdk1.8.0_20/bin"
CLASSPATH="/usr/lib/jvm/jdk1.8.0_20/lib"
JAVA_PATH="/usr/lib/jvm/jdk1.8.0_20"
如果你的系统之前装过OpenJDK,你需要作如下操作:
告诉系统,我们现在使用的是sun的JDK,而非OpenJDK了:
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_20/bin/java 300
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_20/bin/javac 300
$ sudo update-alternatives --config java
有 2 个候选项可用于替换 java (提供 /usr/bin/java)。
选择    路径                                       优先级  状态
------------------------------------------------------------
* 0      /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061        自动模式
  1      /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061        手动模式
  2      /usr/lib/jvm/jdk1.8.0_05/bin/java             300        手动模式
要维持当前值
  • 请按回车键,或者键入选择的编号:2

    4)测试当前java配置是否正确
    $ javac –version
    javac 1.8.0_20
    $ java –version
    java version "1.8.0_20"
    Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
    Java HotSpot(TM) Server VM (build 25.20-b23, mixed mode)
    如果能出现上面的信息,恭喜你JDK安装成功。

    2. 安装Eclipse
    1)下载 Eclipse
    http://www.eclipse.org/downloads ... p;release=undefined下载合适版本,比如这里我们下载的:Eclipse IDE for C/C++ Developers。这个版本已经自带CDT插件,不需要自己安装。同理,如果你想开发java,下载这个页面上Eclipse Standard 4.4即可。
    下载下来的文件名为:eclipse-cpp-luna-R-linux-gtk.tar.gz


    2)解压安装
    将安装包移动到安装目录
    $ sudo mv eclipse-cpp-luna-R-linux-gtk.tar.gz /usr/lib/
    进入安装目录
    $ cd /usr/lib/
    解压安装包
    $ sudo tar -zxvf eclipse-cpp-luna-R-linux-gtk.tar.gz
    删除安装包
    $ sudo rm ./ eclipse-cpp-luna-R-linux-gtk.tar.gz
    解压后是个名为eclipse的文件夹
    文件夹中有两个文件需要我们注意:
    eclipse                Eclipse的启动程序,打开即可运行Eclipse
    icon.xpm                Eclipse图标,后面创建快捷方式时需要用到
    3)测试Eclipse
    $ cd /usr/lib/eclipse
    $ ./eclipse
    出现下面的Workspace Launcher表示安装成功。


    每次从这个路径启动Eclipse太麻烦,下面我们在桌面快捷菜单上建立一个Eclipse的快捷方式,这样会方便很多。
    4)创建Eclipse快捷方式
    在/usr/share/applications目录下新建一个文件eclipse.desktop,加入下面的内容,然后加上可执行权限。
    $ sudo chmod +x eclipse.desktop
    eclipse.desktop内容为:
    [Desktop Entry]
    Type=Application
    Name=Eclipse
    Comment=Eclipse Integrated Development Environment
    Icon=/usr/lib/eclipse/icon.xpm                //程序图标文件,改为你自己的路径
    Exec=/usr/lib/eclipse/eclipse                        //eclipse程序,改为你自己的路径
    Terminal=false
    Categories=Development;IDE;C/C++;


    这时候就能在搜索框里找到Eclipse程序了,还可以将Eclipse图标拖到旁边的快捷启动栏上,方便下次启动。


    至此,IDE开发环境搭建好了,下面我们来看看gdb调试环境的搭建。

    3. gdb和gdbserver
    远程调试linux应用程序,需要两个程序:一个是运行在x86平台的arm-linux-gdb,另一个是运行在开发板上的gdbserver。
    飞思卡尔官方编译工具已经带了主机端的gdb调试工具,使用arm-linux-gdb –v即可查看到。

    注意到此gdb版本为7.2的,因此为了保证最大程度的兼容性,在开发板上运行的gdbserver也定为7.2版本。
    当前官方gdb最新版本为7.8,地址:ftp://mirrors.kernel.org/sourceware/gdb/releases/
    通过上面的地址选择下载7.2a版本。
    编译gdbserver,进入gdb/gdbserver
    $ cd gdb/gdbserver/
    $ ./configure --target=arm-linux --host=arm-linux
    $ make CC=arm-linux-gcc
    将生成的gdbserver文件放入开发板/usr/bin/目录下(也可以放入其他目录,shell能找到即可)。
    前期工作都准备好了,下面看看怎么在Eclipse下调试C程序。

    4. 调试环境搭建
    新建一个helloworld的工程,这个工程采用交叉编译生成i.MX6的程序映像,并且使用gdb远程调试。
    1)打开Eclipse,这里的Workspace默认即可。

    2)新建一个C工程,File->New->C Project

    3)因为我们要编译运行在i.MX6上的程序,所以选择交叉编译Cross GCC。点击Next。

    4)这里默认即可,点击Next


    5)这里很重要
    Cross compiler prefix填入arm-linux-
    Cross compiler path填入交叉编译器的路径,飞思卡尔ltib工具包默认将交叉编译器安装在这个路径下:
    /opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin

    6)点击Finish,在右侧的Project Explore会出现一个helloworld的文件夹。新建测试文件。

    新建一个helloworld.c源文件,填入如下代码。
    #include <stdio.h>
    int main()
    {
            printf("Hello world1!\n");
            printf("Hello world2!\n");
            return 0;
    }
    7)编译测试
    Project->Build All,如果在下面Console界面中没有错误且出现arm-linux-gcc字样,说明交叉编译成功。

    其实到这里,你可以将生成的文件helloworld放入开发板测试了。下面我们开始配置远程gdb调试功能。

    使用file命令查看helloworld的属性,可以看到文件为arm可执行文件,进一步确认编译的正确性。

    8)gdb调试配置
    点击工程图标绿色小虫子旁边的箭头,选择Debug Configurations

    双击右侧第一个菜单C/C++ Application,会出现一个helloworld Debug的标签。


    main标签配置,按照顺序配置

    配置Debugger标签,注意第三个标签选择正确的gdb client端。


    将编译好的程序Debug/helloworld放到开发板中。运行:
    $ gdbserver 192.168.1.155:10000 helloworld
    192.168.220.128为客户端IP地址,10000为监听端口

    设置断点,直接在行号前面双击即可。这里设置了三个断点。

    选择之前配置的Debug开始调试。


    这个不用管,点击YES。出现Debug调试界面。

    i.MX6上也出现了连接提示。

    F6下一步,可以看到调试功能和windows下的VS基本一样。







  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    出0入0汤圆

     楼主| 发表于 2014-9-16 19:48:07 | 显示全部楼层
    本帖最后由 bruce_helen 于 2014-9-16 19:52 编辑

    占楼,29张图,真累。

    为了方便阅读,整理成pdf文件。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    出0入0汤圆

    发表于 2014-9-16 20:20:53 | 显示全部楼层
    不错!

    出0入0汤圆

    发表于 2014-9-16 20:32:17 | 显示全部楼层
    额,不错,明天就试试~~~

    出0入0汤圆

    发表于 2014-9-16 21:07:15 | 显示全部楼层
    这个不错,正好受用,谢谢楼主分享啊

    出0入0汤圆

    发表于 2014-9-16 21:07:32 来自手机 | 显示全部楼层
    这个牛了,可以图形界面debug了。

    出0入0汤圆

    发表于 2014-9-16 21:10:45 | 显示全部楼层
    虽然现在用不到,先收藏了

    出0入0汤圆

     楼主| 发表于 2014-9-16 21:32:41 | 显示全部楼层
    divineliu 发表于 2014-9-16 21:07
    这个牛了,可以图形界面debug了。

    我一般printf就够了,,,
    不过为了方便,还是将这个功能整理出来了。

    出0入0汤圆

    发表于 2014-9-16 21:58:07 | 显示全部楼层
    Eclipse界面确实好看,不过占用资源较多。

    出0入0汤圆

    发表于 2014-9-16 22:10:50 | 显示全部楼层
    果断收藏

    出0入0汤圆

    发表于 2014-9-16 22:25:17 | 显示全部楼层
    LZ,不知道你的ubuntu 12.10有没有遇到 源无法更新的情况,我的apt-get install NFS SAMBA 都会提示找不到安装包,我也尝试更换网上各种源都不行,不知道你有没有遇到

    出0入0汤圆

     楼主| 发表于 2014-9-17 05:31:17 | 显示全部楼层
    danielyuan 发表于 2014-9-16 22:25
    LZ,不知道你的ubuntu 12.10有没有遇到 源无法更新的情况,我的apt-get install NFS SAMBA 都会提示找不到 ...

    我用的163的源,软件什么的都能下载啊,没有出现你的问题。

    出0入0汤圆

    发表于 2014-9-17 08:09:34 | 显示全部楼层
    不错,学习了。

    出0入0汤圆

    发表于 2014-9-17 08:10:04 | 显示全部楼层
    图形界面的确很漂亮 ,人机交互也方便 。 但是一般开发都是虚拟机里面装linux ,再安装一个Eclipse ,感觉电脑有点吃力,还是用GCC 比较节省资源

    出0入0汤圆

    发表于 2014-9-17 08:36:22 来自手机 | 显示全部楼层
    Mark..........

    出0入0汤圆

     楼主| 发表于 2014-9-17 09:19:44 | 显示全部楼层
    franki 发表于 2014-9-17 08:10
    图形界面的确很漂亮 ,人机交互也方便 。 但是一般开发都是虚拟机里面装linux ,再安装一个Eclipse ,感觉 ...

    是的,装在虚拟机里就有点卡了。
    等哪天自己有能力了直接在电脑上装个Ubuntu,工作啥的全在Ubuntu下完成,应该还是很爽的。

    出0入0汤圆

    发表于 2014-9-17 09:28:59 | 显示全部楼层
    很好,有在fedora 上用过吗?应该差不多的吧

    出0入0汤圆

    发表于 2014-9-17 10:01:37 | 显示全部楼层
    danielyuan 发表于 2014-9-16 22:25
    LZ,不知道你的ubuntu 12.10有没有遇到 源无法更新的情况,我的apt-get install NFS SAMBA 都会提示找不到 ...

    你好,你试一下这个源。我这边在用,是OK的。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    出0入0汤圆

    发表于 2014-9-17 10:02:51 | 显示全部楼层
    感谢楼主分享啊,很赞~~

    出0入0汤圆

     楼主| 发表于 2014-9-17 11:03:42 | 显示全部楼层
    nishuizhou 发表于 2014-9-17 09:28
    很好,有在fedora 上用过吗?应该差不多的吧

    没用过,应该差不多。JDK和Eclipse的兼容性还是不错的

    出0入0汤圆

    发表于 2014-9-17 11:35:51 | 显示全部楼层
    FSL_TICS_Rita 发表于 2014-9-17 10:01
    你好,你试一下这个源。我这边在用,是OK的。

    好的 多谢

    出100入101汤圆

    发表于 2014-9-17 11:42:32 | 显示全部楼层
    LZ平时做项目写代码也是用Eclipse?

    出0入16汤圆

    发表于 2014-9-17 11:56:47 | 显示全部楼层
    高大上。。

    出0入0汤圆

     楼主| 发表于 2014-9-17 13:55:16 | 显示全部楼层
    fengyunyu 发表于 2014-9-17 11:42
    LZ平时做项目写代码也是用Eclipse?

    是的,准备使用,主要看重Eclipse不需要自己写Makefile,新手,写工程的Makefile还是有点吃力的。
    编辑器什么的就随意了,不一定使用Eclipse。虚拟机里面跑Eclipse还是有点慢的

    出0入0汤圆

    发表于 2014-9-18 09:08:36 | 显示全部楼层

    哈哈,不客气的

    出0入0汤圆

    发表于 2014-9-20 13:05:00 | 显示全部楼层
    有一款i.mx6板子,先保存学习。谢谢

    出0入0汤圆

     楼主| 发表于 2014-9-20 14:11:58 | 显示全部楼层
    qingzhou 发表于 2014-9-20 13:05
    有一款i.mx6板子,先保存学习。谢谢

    你的是官方的开发板么?
    感觉开源社区玩i.MX6的板子比较少,没有丰富的资源。

    出0入0汤圆

    发表于 2014-9-20 14:29:48 | 显示全部楼层
    收藏,学习

    出0入0汤圆

    发表于 2014-9-20 15:02:31 | 显示全部楼层
    bruce_helen 发表于 2014-9-20 14:11
    你的是官方的开发板么?
    感觉开源社区玩i.MX6的板子比较少,没有丰富的资源。 ...

    官方的、timll的都有。需要做一个双屏异显的设备。

    出0入0汤圆

    发表于 2014-9-20 15:26:05 | 显示全部楼层
    收藏待学

    出0入0汤圆

    发表于 2014-9-20 15:38:04 | 显示全部楼层
    这个要得啊;

    出0入0汤圆

    发表于 2014-10-8 17:37:56 | 显示全部楼层
    确实高大上,赞~~

    出0入0汤圆

    发表于 2014-10-8 20:20:20 | 显示全部楼层
    果断收藏

    出0入0汤圆

    发表于 2014-10-8 21:09:13 | 显示全部楼层
    在windows下,同样用eclipse也可以实现 arm linux的调试

    出0入0汤圆

     楼主| 发表于 2014-10-8 21:41:41 | 显示全部楼层
    quzegang 发表于 2014-10-8 21:09
    在windows下,同样用eclipse也可以实现 arm linux的调试

    windows下有交叉编译器吗?还是有其他什么方法,可以共享下么?linux下跑虚拟机太慢了

    出0入0汤圆

    发表于 2014-10-8 21:50:07 | 显示全部楼层
    果断收藏

    出0入0汤圆

    发表于 2014-10-9 08:11:49 | 显示全部楼层
    很详细步骤,受益

    出0入0汤圆

    发表于 2014-10-9 09:20:10 | 显示全部楼层
    imx的板子太贵了

    出0入0汤圆

    发表于 2014-10-9 12:58:30 | 显示全部楼层
                                                     .                  

    出0入0汤圆

    发表于 2014-10-9 13:41:34 | 显示全部楼层
    感谢Lz的资料~

    出0入0汤圆

    发表于 2014-10-9 14:00:40 | 显示全部楼层
    先顶一个。图文并茂很辛苦的。

    出0入0汤圆

    发表于 2014-10-9 14:43:22 | 显示全部楼层
    bruce_helen 发表于 2014-10-8 21:41
    windows下有交叉编译器吗?还是有其他什么方法,可以共享下么?linux下跑虚拟机太慢了 ...

    mentor 公司arm-none-linux-gnueabi 编译器是有windows版本的,可以运行于windows平台。同时mentor公司也有自己的基于eclipse的 arm linux 开发IDE,但是是收费的,编译器免费。

    出0入0汤圆

     楼主| 发表于 2014-10-9 16:48:23 | 显示全部楼层

    呵呵,老大给个精华吧

    出0入0汤圆

     楼主| 发表于 2014-10-9 16:49:46 | 显示全部楼层
    quzegang 发表于 2014-10-9 14:43
    mentor 公司arm-none-linux-gnueabi 编译器是有windows版本的,可以运行于windows平台。同时mentor公司也 ...

    好吧,不想折腾了。就这么用用了,还有一堆代码要写

    出0入0汤圆

    发表于 2014-10-9 17:32:57 | 显示全部楼层
    用linux就是折腾啊。收藏下,以后可能用的到。

    出0入0汤圆

    发表于 2014-10-9 22:01:49 | 显示全部楼层
    bruce_helen 发表于 2014-10-9 16:49
    好吧,不想折腾了。就这么用用了,还有一堆代码要写

    不算折腾,环境半小时只能肯定能搭建完毕。相比于用虚拟机还是有很大优势的。从网上转载了一篇文档,希望对大家有所帮助

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    出0入0汤圆

     楼主| 发表于 2014-10-10 08:10:15 | 显示全部楼层
    quzegang 发表于 2014-10-9 22:01
    不算折腾,环境半小时只能肯定能搭建完毕。相比于用虚拟机还是有很大优势的。从网上转载了一篇文档,希望 ...

    全部看完,总结的非常好,谢谢分享

    出0入0汤圆

    发表于 2014-10-10 09:41:58 | 显示全部楼层
    bruce_helen 发表于 2014-10-9 16:48
    呵呵,老大给个精华吧

    很抱歉的啊,我没有权限的。否则一定给精华。

    出0入0汤圆

    发表于 2014-10-10 09:43:14 | 显示全部楼层

    你可以找一下第三方公司做的板子,相对来说会便宜一些的。

    出0入0汤圆

    发表于 2014-10-20 23:58:38 | 显示全部楼层
    总结得不错,学习了

    出0入0汤圆

    发表于 2014-10-21 10:39:57 | 显示全部楼层
    超级好,谢谢

    出0入0汤圆

    发表于 2014-12-10 15:43:08 | 显示全部楼层
    这个必须赞!之前都不会在eclipse下单步调试呢,谢谢楼主分享!

    出100入101汤圆

    发表于 2014-12-10 15:49:58 | 显示全部楼层
    linux下step by step调试经验,学习了!

    出100入101汤圆

    发表于 2014-12-13 12:26:48 | 显示全部楼层
    请教下LZ,你平时用GDB 调试用的多么?

    出0入0汤圆

    发表于 2014-12-13 15:58:49 | 显示全部楼层
    很赞的帖子 ,可以申请个精华的 。

    出0入0汤圆

    发表于 2014-12-13 16:10:14 | 显示全部楼层
    看起来好复杂的样子!

    出0入114汤圆

    发表于 2014-12-15 13:01:28 | 显示全部楼层
    如何跟踪调试linux kernel呢? 你这个主机和imx6的板子是通过以太网连接的吗?

    出0入0汤圆

     楼主| 发表于 2014-12-15 13:11:13 | 显示全部楼层
    cloudxxcloud 发表于 2014-12-15 13:01
    如何跟踪调试linux kernel呢? 你这个主机和imx6的板子是通过以太网连接的吗? ...

    没研究过内核的调试。
    是的,通过TCP和目标板通信的

    出100入101汤圆

    发表于 2014-12-15 13:12:55 | 显示全部楼层
    cloudxxcloud 发表于 2014-12-15 13:01
    如何跟踪调试linux kernel呢? 你这个主机和imx6的板子是通过以太网连接的吗? ...

    一半不需要调试内核。调试内核有专门的仿真器。

    出0入0汤圆

    发表于 2014-12-15 14:54:50 | 显示全部楼层
    这个做什么用,开发linux应用程序?

    出0入0汤圆

    发表于 2014-12-15 18:27:58 | 显示全部楼层
    很好的学习贴 刚买个283 收藏下 以后研究

    出0入0汤圆

    发表于 2015-1-13 18:08:17 | 显示全部楼层
    以前调试linux应用程序一般用打印,试试实时调试!
    谢谢!

    出0入0汤圆

    发表于 2015-1-13 18:21:54 | 显示全部楼层
    cjwdyzdd 发表于 2014-12-15 14:54
    这个做什么用,开发linux应用程序?

    开发linux应用程序没有问题 ,相当于建立了一个编译环境 !

    出0入0汤圆

    发表于 2015-3-12 09:57:57 | 显示全部楼层
    ubuntu使用了一年,就是在编程方面还没摸到头脑,在学习中!

    出0入0汤圆

    发表于 2015-3-12 10:05:16 | 显示全部楼层
    不错,好东西,谢谢分享

    出0入0汤圆

    发表于 2015-3-12 11:08:41 | 显示全部楼层
    不错,谢楼主分享

    出0入17汤圆

    发表于 2015-7-14 13:51:08 | 显示全部楼层
    每一步操作都很清晰,感谢分享。

    出0入0汤圆

    发表于 2015-7-31 03:44:27 | 显示全部楼层
    哈哈,半个月前在DE1-SOC实现了eclipse indigo的SSH远程调试。

    出100入101汤圆

    发表于 2015-7-31 06:51:28 | 显示全部楼层
    LZ的i.MX6开发板有没有跑过安卓?

    出0入0汤圆

    发表于 2015-7-31 08:51:54 | 显示全部楼层
    真的干货

    出0入0汤圆

    发表于 2016-2-22 15:28:05 | 显示全部楼层
    真的是干货,顶起来,

    出0入0汤圆

    发表于 2016-12-2 14:19:15 | 显示全部楼层
    imx6开发环境搭建

    出0入0汤圆

    发表于 2019-7-16 15:13:30 | 显示全部楼层
    干货满满啊,感谢楼主。

    出0入0汤圆

    发表于 2019-7-16 15:50:26 | 显示全部楼层
    不错,明天试试

    出100入101汤圆

    发表于 2020-9-30 11:25:42 | 显示全部楼层
    quzegang 发表于 2014-10-9 14:43
    mentor 公司arm-none-linux-gnueabi 编译器是有windows版本的,可以运行于windows平台。同时mentor公司也 ...

    现在还是用虚拟机的多吧,网上的文章、教程基本是虚拟机环境
    回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    手机版|Archiver|amobbs.com 阿莫电子论坛 -- 东莞阿莫电子网站 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

    GMT+8, 2022-10-2 17:40

    © Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

    快速回复 返回顶部 返回列表