黄山松 (Tom Huang) 发表于博客园http://www.cnblogs.com/tomview/

首先说明一下,VC6自然不能直接开发LINUX程序,主要使用的是它的编辑环境而已,但是作为一个一直在WINDOWS上使用VC6的开发者,不以VC6作为开发的核心是多么地不习惯啊。

还要说明的是,自己对linux是门外汉,提到的linux的事情都是门外汉的看法,仅供参考。

2015年突然有点雄心壮志,准备把自己的车牌识别系列软件移植到LINUX系统中,这样可以固化在摄像头里面,也可以做成嵌入式的硬件。经过简单的考察,选择了INTEL公司的EDISON平台。优点是(1)体积小,自带wifi模块;(2)速度快于同期的树莓派;(3)x86体系,原来算法里面的特殊指令优化(如MMX指令)可以继续有效;(4)有官方论坛和技术支持;缺点也是很明显,价格高,Edison模块+Braekout底板的价格至少是树莓派的2倍。但由于是在LINUX下开发,所以更换平台应该比较容易。

下面的链接是Intel的Edison主页:

http://www.intel.com/content/www/us/en/do-it-yourself/edison.html

对于一直在WIN下一直用VC6集成环境开发的人来说,搞清楚linux编程的make就是一个挑战,找对整个工具链并能够正确配置也有难度,特别对于没有积累,没有老师,完全靠网络资源的情况下。

刚开始使用爱迪生开发的标准工具链,使用Eclipse,配合爱迪生的交叉编译器,实现爱迪生的开发。但发现很多不习惯的地方,一个是Eclipse运行慢,绝不像Vc6那样行云流水;另外一个是Eclipse必须使用intel的插件,但是收费的(因为Intel编译器有一个 --sysroot 选项,标准的Eclipse里面好像无法处理;不过现在好像有个Eclipse的Intel专版)。

后来决定用VC6的集成环境来编写程序,具体采用了如下的措施:

(1)每个程序建立一个VC的工程,管理并编辑修改源文件和头文件;

(2)程序要在win32先编译成功,并能正确运行。在这一步之后再用交叉编译器编译为linux下的程序。为了实现这一点,要(1)尽量用纯C的库函数,保证大部分代码在两个平台通用;(2)尽量减少平台相关的代码;(3)确实需要的平台相关的代码,封装一下,通过条件编译调用不同的代码;(4)所有通讯尽量都用网络通讯,封装统一的SOCKET通讯模块;

由于是嵌入式程序,因此上面对于代码实现的这些要求容易实现。

(3)自己做了一个调用intel交叉编译器的工具,自动读取vc6工程的文件列表,进行编译连接;并把编译信息和错误显示在VC6的输出窗口里面。下图是我的编译工具的参数设置界面。

我的编译工具把Intel交叉编译器的编译消息也输出到VC6的编译输出窗口里面,如下图:

工具程序自动修改intel编译器的输出消息里面的源文件名和行号的格式,可以实现在VC6编译信息输出窗口里面双击编译错误消息自动跳到对应的源代码。

(4)在编译完成之后自动通过网络发布到爱迪生板子上

(5)下面就是最重要的部分了,在线调试程序

实现在线调试还是很复杂的,没有打算自己实现,目前在win下先实现功能,并进行测试,然后再到linux下运行验证;此外程序尽量多输出调试信息。如果非要在线单步调试,那要按照标准的linux远程调试方法来操作了。

顺便提一下,这个项目已经取消了,因为突然就厌倦了编程……

用VC6开发嵌入式LINUX程序的更多相关文章

  1. [ARM-Linux开发] 嵌入式 linux如何生成ko文件

    hello.c文件如下 驱动程序: #include <Linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件. #include <asm ...

  2. 基于live555开发嵌入式linux系统的rtsp直播服务

    最近要搞一个直播服务,车机本身是个前后双路的Dvr,前路1080P 25fps,后路720P 50fps,现在要连接手机app预览实时画面,且支持前后摄像头画面切换. 如果要做直播,这个分辨率和帧率是 ...

  3. 使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序

    写这篇文章的目的在于帮助那些既要使用Visual Studio编写程序又要开发和调试嵌入式Linux 程序的苦命程序员们! 第一步, 安装 WinGDB ,下载位置  http://www.wingd ...

  4. 嵌入式Linux学习小结

    这两个月一直在学习Linux.作为一名刚開始学习的人,学习期间难免磕磕碰碰.走弯路,可是,抱着不怕失败.多尝试的信念,终于还是坚持下来了. 如今已经清楚Linux的框架,知道怎么去开发一个Linux程 ...

  5. 使用VS+VisualGDB编译调试Linux程序

    Linux程序开发变得越来越多,越来越多的程序.产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要. 但是对于习惯了Windows下的开发,使用了VS这个宇宙第 ...

  6. LwIP协议栈开发嵌入式网络的三种方法分析

    LwIP协议栈开发嵌入式网络的三种方法分析   摘要  轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中.本文结合μC/OS-II这一实时操作系统,以 ...

  7. 嵌入式Linux应用程序开发详解------(创建守护进程)

    嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...

  8. 《嵌入式linux应用程序开发标准教程》笔记——6.文件IO编程

    前段时间看APUE,确实比较详细,不过过于详细了,当成工具书倒是比较合适,还是读一读这种培训机构的书籍,进度会比较快,遇到问题时再回去翻翻APUE,这样的效率可能更高一些. <嵌入式linux应 ...

  9. 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案

    笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...

随机推荐

  1. (2)RGB-D SLAM系列- 工具篇(依赖库及编译)

    做了个SLAM的小视频,有兴趣的朋友可以看下 https://youtu.be/z5wDzMZF10Q 1)Library depended 一个完整的SLAM系统包括,数据流获取,数据读取,特征提取 ...

  2. Play!中使用HTTP异步编程

    本章译者:@Sam Liu (译者未留下自己的主页,请Sam Liu见此文,加入群168013302联系‘大黄蜂@翻译play’) 这一章主要讲解如何运用异步模式实现典型的长连接(long-polli ...

  3. a标签的href值

    <a href='#'>click</a>实验证明,页面上能不用这个值就最好不要用这个#,这个#会让你的页面瞬间滚动到页面的顶部,我不知道已经踩了多少次坑了,就是因为这个'#' ...

  4. CSS3 使用自定义字体

    CSS3 @font-face 规则 在 CSS3 之前,web 设计师必须使用已在用户计算机上安装好的字体.通过 CSS3,web 设计师可以使用他们喜欢的任意字体.当您您找到或购买到希望使用的字体 ...

  5. App 即时通讯 SDK

    1.网易云信 http://netease.im/ 2.环信 http://www.easemob.com/customer/im 3.融云 http://www.rongcloud.cn/ 4.极光 ...

  6. 两个Service之间相互监视的实现

    在实际开发中可能需要用到两个Service相互监视的情况,本示例就是实现此功能以作参考. 服务A: public class ServiceA extends Service { private st ...

  7. AFNetwork2.0在报错1016,3840的解决方法及一些感悟

    最近在学习AFNetwork,非常好的网络框架,能节省很多时间.不过请求网络数据时报错1016,3840. 这两个错误网上解决方法很多,http://blog.csdn.net/huifeidexin ...

  8. Mac wifi已打开但尚未连接到网络

    把网络偏好设置  里面的询问新网络 关闭了   然后  重启电脑  试一下  应该就可以了

  9. Android IPC机制之Messenger

    Messenger:两个进程通过Messenger传递消息,进程1和进程2中都需要创建一个Messenger,创建过程:首先进程2需要创建一个服务, 并在服务中创建一个Messenger对象,进程1通 ...

  10. 省市县三级联动 sql语句

    发现在网上的省市县三级联动大部分是mysql的.就算是sqlserver的,也不准确.于是就把mysql的给改了下,适用sqlserver.sql语句如下: CREATE TABLE Dic_Area ...