用VS2013+VELT进行Linux开发

快乐虾

http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)

欢迎转载,但请保留作者信息

 

1.1.1  什么是VELT

 

VELT的全称是Visual EmbedLinuxTools,它是一个visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visualstudio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译和调试,并根据编译时的错误信息正确定位到源码。目前的版本是0.1.6,仅支持vs2013。此插件可以在CSDN下载频道下载(http://download.csdn.net/detail/lights_joy/8544349)。下面是它的基本功能:

 

  1. 支持x86 Linux,海思hi3516/hi3520,MinGW,Marvell/xCAT这几个平台,提供这几个平台的项目模板。

  2. 完成UBOOT的编译,并根据编译的错误信息自动定位到相应的文件位置。

  3. 完成LINUX内核的编译,并根据编译的错误信息自动定位到相应的文件位置。

  4. VS下利用串口进行内核的简单调试。

  5. VS下完成Linux内核的配置。

  6. 不使用Makefile进行Linux应用程序的开发。

  7. 使用Makefile进行Linux应用程序的开发。

  8. 可支持Linux下的应用程序、动态库、静态库、Console/GUI等应用的开发与调试。

  9. 使用SSH连接目标机器并用gdb进行应用程序的调试。

  10. 使用Telnet连接目标机器并用gdb进行应用程序的调试。

  11. VS中集成Linux终端(Poderosa),支持SSH/Telnet/Com,在打开终端时自动将VS的变量导出为bash里的变量,如ProjectDir等。

  12. 对于x86 Linux内核,可以直接用Qemu进行调试。

     

 

1.1.2  IntelliSense的基本原理

 

VELT没有自己的代码分析工具,但由于它使用的工程是VC++工程,因此VC可以完成代码分析和智能提示,VisualAssist X这样的插件也可以正常工作!

 

 

 

1.1.3  编译的基本原理

 

VELT本身并不包含任何编译工具,它所做的工作仅仅是把VS2013这个前端和不同的GNU编译器连接起来而已,真正的编译与调试仍然由交叉编译工具完成,因此在VS下进行Linux开发的前提是Linux下的交叉编译环境能够正常工作!

 

在进行代码编译的时候,VELT采用的是远程编译的方法,当VS进行编译操作的时候,VELT使用SSH登录到Linux主机系统中进行编译,再分析编译过程中产生的信息,将之转换为vs能够识别的信息,这样VS就可以在IDE中正确定位错误发生的文件!为了达到此目的,需要保证vs2013也能够正常访问代码文件。VELT依赖于Linux的samba或者虚拟机的共享目录功能来实现项目文件的共享,不支持用scp将文件上传到Linux后进行编译。

 

 

如上图所示:

 

vs2013的编译过程是由MSBUILD来控制的,VELT重载了MsBuild下的编译任务,如果开发的是Linux程序,VELT将调用putty通过SSH远程连接到Linux开发机上,再调用开发机上的gcc编译器进行编译,如果开发的是MinGW程序,VELT将通过cmd.exe调用MinGW gcc进行编译。

 

在编译过程中,VELT将接收putty.exe或者cmd.exe上的输出信息进行分析,将这些信息转换为VS可以识别的错误和警告信息输出到VS的输出信息栏中。

 

 

 

1.1.4  应用程序调试的基本原理

 

Linux应用程序调试这一块,VELT不但能支持Linux下console应用程序的调试,在Windows上安装了XServer后也能进行gui应用程序的调试,但只能使用gdb,不支持gdbserver,其调试引擎的结构为:

 

 

如上图所示,VELT在WINDOWS端运行了几个辅助程序。

 

首先是RemoteConsole,这个程序的主要作用是显示远端程序的输出,并接受用户输入传送给远端,此程序包含在EmbedLinux的安装包中。

 

其次是putty,这个程序用于完成SSH/TELNET/COM连接,并负责调用远端Linux上的gdb。,此程序包含在EmbedLinux的安装包中。

 

如果要在vs下调试Linux下的GUI程序,还需要安装Xming这个windows下的x server,此程序不在EmbedLinux的安装包中,需要自己到mingw.org下载并安装。如果不需要调试GUI程序当然也可以不理会它。

 

当按下Ctrl-F5不调试运行时,VELT的结构就变成了这样:

 

 

此时VC调试引擎将直接调用RemoteConsole,RemoteConsole再根据需要调用putty连接Linux机器并调用目标程序,如果调试的是windows下的程序,RemoteConsole将通过cmd.exe调用本地的TargetApp。

 

 

 

1.1.5  开发环境

 

下面是一个典型的嵌入式开发环境配置:

 

主机开发环境:

 

系统:WIN8 64位

 

开发工具:vs2013 + velt-0.1.6

 

虚拟机:Vmware workstation-11.0。

 

 

 

编译主机开发环境:

 

虚拟机的系统用于交叉编译和嵌入式开发中各种服务的提供。

 

操作系统:RHEL-6.3,此虚拟机仅用于开发,不考虑其安全性的配置。

 

开发工具:gcc、不同平台下的交叉编译工具链。

 

系统服务:开启tftp、samba、ftp、ssh

 

 

 

目标机:想使用的平台,如海思、TI、ADI等平台,或者虚拟机的Linux。

 

连接方式:telnet / ssh / com

 

调试方式:gdb / gdbserver

 

 

 

1.1.6  目录共享

 

首先将windows目录通过vmware的共享目录功能共享给Linux,如f:\work,在Linux下看到的目录就是/mnt/hgfs/share/work。

 

其次将Linux下的目录通过samba服务共享给windows,如/work,映射到windows下的z:\,这里需要注意的是samba的帐号和我们后面用SSH登录的帐号应当一致,避免由于权限问题造成不必要的干扰。

 

当进行uboot和linux内核的开发时,代码只能放在linux的虚拟硬盘中,而不能放在windows系统中,因为它们需要使用符号链接,也需要区分大小写。

 

而在进行普通应用程序开发时,如果没有使用符号链接,只需要将代码放在windows目录下,这样可以加快vs的代码分析速度。

 

 

 

1.1.7  Sdf文件位置

 

由于VS2013浏览信息放在SDF文件中,而项目文件可能放在虚拟机的共享目录中,因此需要更改SDF文件的路径,务必保证它位于windows直接管理的硬盘上,否则在编译大项目时将导致运行速度缓慢。

 

 

 

 

1.1.8  VELT安装

 

下面开始安装VELT插件:

 

1、解开VELT的压缩包,放到某个目录下,如我的目录是:

 

F:\projects\src\gdb2012\EmbedLinux

 

此目录应当避免空格与中文文件名!

 

2、在环境变量中添加一个叫EMBEDLINUX_ROOT的环境变量:

 

 

注意路径结尾的反斜杠。这里的路径就是VELT压缩解压后的路径。

 

3、安装release目录下的EmbedLinux-0.1.6.vsix:

 

 

安装完成后应当可以在vs的帮助信息中看到这个插件:

 

 

也可以在工具->扩展和更新中看到:

 

 

4、将msbuild\Platforms目录下的所有文件复制到:

 

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Platforms

 

5、打开VS的新建项目窗口,可以看到新添加的几个平台:

 

 

至此安装完成!

 

from:http://blog.csdn.net/lights_joy/article/details/44728145

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值