通过共享文件夹高效调试ARM上Linux的C/C++程序 - ZYNQ7021学习

       这是一篇博客主要讲如何使用windows和Ubuntu虚拟机联合高效调试ARM上linux的C/C++项目,是在做ARM上linux的C/C++应用程序开发的小总结。

开发环境

系统:
       Windows 10 Pro 64位
       Ubuntu 16.04 64位

软件:
       Microsoft Visual Studio 2010

问题描述

       当进行稍微大型一点的ARM上的linux的C/C++项目开发时,用惯了windows下的函数跳转等功能,到了linux开发环境,在调试代码和代码维护时感觉非常的不适应。在这里,分享一下使用windows和Ubuntu虚拟机联合高效调试ARM上linux的C/C++项目的开发经验。

解决方案

       首先,这个方法开发方式需要在windows下安装VS(其他IDE没尝试过)、搭建Win10与Ubuntu虚拟机的共享文件夹,在Ubuntu虚拟机中安装NFS文件系统。在windows下可以像编写windows的代码一样编写,保存以后直接跳转到Ubuntu内进行交叉编译。对于有许多源文件的项目的维护来说,这就是一个极大的福利,终于不用在一个文件一个文件的去使用Find功能查找某一个函数的具体实现了。不要在windows下尝试编译,因为linux的库和windows的有些库是不一样的,编译一般不会通过。

第一步

       在VS中新建一个工程,将工程的路径选择为windows和Ubuntu的共享文件夹,将*.c源文件和*.h头文件添加到工程中或者或者自己创建源文件,添加工程完成之后,VS就能在不需要编译的情况下,实现函数跳转的功能。

第二步

       切换到Ubuntu系统,进入到共享文件夹中,添加一个shell脚本文件compile.sh,compile.sh主要实现的功能为设置编译环境、调用ARM的G++/GCC编译器对*.cpp或者*.c进行交叉编译、将编译后的可执行文件拷贝到NFS共享文件夹下。在这个目录下打开终端,输入“./compile.sh”就能完成compile.sh中的一系列繁琐指令的功能,使用脚本编译这个方法非常的便利。若脚本为compile,没有.sh后缀时,如果执行“./compile”时提示“没有执行权限”时,使用“chmod 777 compile ”赋予compile可执行权限即可。compile.sh内容如下

source /opt/Xilinx/SDK/2015.4/settings64.sh
arm-xilinx-linux-gnueabi-g++ *.c -o run.out -static
cp run.out /home/wqihong/work/nfs_server/

注释:

   第一行:设置交叉编译环境
   第二行:静态编译所有的“.c”文件
   第三行:将编译输出的可执行文件拷贝到NFS挂载的文件夹下。

第三步

       完成了上面的两步,在开发板的/mnt文件夹下就可以看到最新的可执行文件了,在开发板的控制台上输入指令“./run.out”就可以运行可执行文件了(run.out是可执行文件的名字)。

       在进行Linux多线程开发时,GDB跟踪调试并不好使,这样进行调试不失为一个好办法。不喜勿喷!

 

你可能感兴趣的:(嵌入式开发,Linux开发)