我开发Linux服务程序的工作环境搭配
老师,可以写一篇文章介绍一下如何使用vim搭建好用的linux开发环境吗?(比如vim如何设置快捷键可以做到一键编译和运行,常用的插件如何安装等)
答:
我不会用vim,也从不用。
问:
听说实际工程中,可以在windows下写代码然后放到linux下编译,但是每改一个文件就要上传到linux,好像很麻烦,肖老师可以写一篇文章介绍一下如何在windows写linux下软件的代码的文章吗?主要是如何管理文件。谢谢。
答:
嗯,好吧,我把我自己的工作习惯写篇文章给大家看看。
1、工程管理,甭管什么语言的源代码文件,可以直接建立一个工程来管理,这很方便,我一个游戏十几万行,分属在上百个asm文件里面,如果不管理,会死人的。
2、自定义关键字高亮度显示,这个很重要,我使用的是6502宏汇编,VC肯定是没有这个关键字的,不过,我写了个自定义的文件,导入进去,就ok了,看起来很漂亮和醒目,关键是,自己不容易看错。嗯,有个细节,我当时主要还在用BASIC语言,就是VB啦,对于BASIC语法很熟,我以前讲过,我利用宏,做了一整套BASIC语言的宏,方便书写汇编语言,搞得我6502汇编语言里面,全是FOR、NEXT、PRINT什么的,我把这些Basic的关键字也做了高亮,很好看。
3、外部编译工具,VC肯定是没有办法做这个6502交叉编译的,不过,它提供了自定义工具,允许一键调用外部的“bat”批处理,实现编译,这个很方便,嗯,我当时把它的快捷键都拦截成“Alt-F7”了,确实很舒服。
4、支持矩形块拷贝,一般的编辑器,都是行拷贝,即只能选择一行或者几行拷贝,但是,很多时候,我们在复制结构体的时候,或者很多有规律排列的文字的时候,比如,《0bug-C/C++商用工程之道》,里面的任务池的任务,由于采用程序三段论,一般定义TaskInit,TaskLoop,TaskExit,一般一排列就是如下模式:
static bool TravelTaskInitCallback(void* pCallParam,int& nStatus);
static bool TravelTaskLoopCallback(void* pCallParam,int& nStatus);
static bool TravelTaskExitCallback(void* pCallParam,int& nStatus);
大家看整齐不整齐?不过,问题来了,如果我们只拷贝TravelTaskxxxxCallback这部分内容,矩形块拷贝就很方便了,这在VC中一直没有变过,就是按住Alt键拉块,然后Ctrl-C拷贝就好了,而不需要拷贝3行,再来挑着删除,这也是一个很常用的功能,很方便。
5、最重要的来了,VC4.2允许录制和回播键盘宏,这个功能很重要,很多时候,我们输入大量的内容,需要用复制、粘贴命令,但是,如果这大量的资料,每笔之间只差一小点,但是又符合规律,怎么办?这就需要键盘宏。
比如我在数组中输入Item000、Item001、、、Item999,共计1000个这种内容,拷贝肯定不行。我的做法如下:
- 1、先准备10行Item000~Item009,每个占1行
- 2、把这10个拷贝10份,就有了100个。
- 3、我把光标弄到第二个Item000,即应该是Item010的位置。把光标放到行首。
- 4、重要的来了,我开始录制键盘宏,然后一点点把光标挪到Item000的第二个0的位置,把0替换为1,即获得一个Item010,然后,我把光标调到下一行的行首。然后停止录制宏。
- 5、大家发现我获得什么没有?我获得了一个键盘宏,可以把Item00x的第二个0,改成1的宏。同时,我精心设计了光标位置,使每次播放宏后,光标位置恰好是下一次播放宏的起始点,这很重要。
- 6、然后,我把这个宏播放9次,喏,大家可以推测,我获得了Item010~Item019这十个对象。
- 7、如法炮制,把0改1换成0改2,2x系列也有了,一直到9x。
- 8、把这100个拷贝10份,就有了1000个对象,每100个内部的单元都是按顺序,000~099排列好的。
- 9、重要的又来了,我如法炮制,把光标挪到第二个Item000处,即应该是Item100这个位置。
- 10、做个键盘宏,把0xx改成1xx,重复99次,1xx系列就好了。
- 11、如法炮制,制作2xx~9xx,任务完成。
- 1、使用VSIDE编程,制作makefile。
- 2、使用VM运行一个Linux虚拟机,我一般喜欢用Fedora9,在里面安装arm-linux-gcc编译环境
- 3、ftp到linux下的home
- 4、putty登录,到目录下去make
- 5、从linux控制台,再ftp登录arm9的linux,把编译好的可执行文件上传过去
- 6、arm小机器不支持ssh,我就从windows的超级终端,或者linux的控制台,二次telnet登陆arm机器,run程序。
- 7、完成工作,呵呵,大家看麻不麻烦?不过,这样也做成了一些工程。我的0bug工程库在arm机器下验证就是这么做的。
1、所谓设计,表示程序员需要精确控制自己的程序思想,走到哪一步,一个变量应该是什么值,要心中有数,这样才能确定程序运行时正确与否。
2、所谓检查,表示程序员要有手段“看到”变量的中间值,以便比较对错。
大家去想,程序调试是不是这么回事?
这个Debug类甚至是整个工程库的基础,它是最底层的类,它的对象,在进程一起动就实例化,在所有其它模块退出完成后析构,其重要性,不言而喻。
跟大家说句老实话吧,这么多年,其实我虽然一直用VCIDE在开发,但真没怎么去依赖F9、F10什么调试功能,基本上都是依赖自己的Debug类实现的调试。
在线底价购买《0bug-C/C++商用工程之道》
(直接点击下面链接或拷贝到浏览器地址栏)
http://s.click.taobao.com/t_3?&p=mm_13866629_0_0&n=23&l=http%3A%2F%2Fsearch8.taobao.com%2Fbrowse%2F0%2Fn-g%2Corvv64tborsvwmjvgawdkmbqgboq---g%2Cgaqge5lhebbs6qzlfmqmttgtyo42jm6m22xllqa-------------1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16%2C17%2C18%2C19%2C20---40--coefp-0-all-0.htm%3Fpid%3Dmm_13866629_0_0
我开发Linux服务程序的工作环境搭配相关推荐
- windows 前端工作环境搭建指北
前言 这篇文章是面向那些想要使用命令行开发,却又不想放弃 windows 的童鞋 工作这几年,虽然也有在服务器上用 vim 开发的经验,但是个人的工作环境一直是 windows,要说为什么,一个是不太 ...
- 驱动开发 - WDK 调试及 SVN 环境搭建[转]
由于从公司辞职了,所以以前在公司里搭建的驱动开发环境也就 Game Over 了, 同样由于那环境是很久以前搭建的,自己也有很多记不清楚的地方了, 而且其中还是有很多需要注意的地方的,所以在这里顺便做 ...
- 【Linux】记录在Linux桌面环境(deepin)中搭建工作环境,Java、Python、Go、Web等开发环境
记录 一.基本工作环境配置 1.1 x11vnc 1.1.1 X相关概念 1.1.2 安装x11vnc 1.1.3 设置x11vnc自启动 1.1.4 改为使用vino-server 1.2 git配 ...
- 生产环境部署与协同开发 Linux
一.Linux概述 Linux内核最初只是由芬兰人林纳斯·托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的. 1.1 Linux特点 首先Linux作为自由软件有两个特点: 一是它免费提供源代 ...
- 汇编程序开发环境搭配
引子 由于这些日子一直都在研究底层的技术,从 Windows 驱动程序,到 Windows 内核等等技术的学习, 让我对底层的技术越发有兴趣了,而刚好,在研究 WRK 时, 对内存管理,寄存器,地址总 ...
- linux配环境,一个操作系统的实现linux下环境搭配
winxp+VM9.0+ubuntu11.04+Bochs2.6 前几天在Windows下搭建了bochs的调试环境,但是思前想后,还是决定重新把环境搭建在linux下面,作为一名菜鸟程序员,还是起个 ...
- 汇编程序开发环境搭配[转]
引子 由于这些日子一直都在研究底层的技术,从 Windows 驱动程序,到 Windows 内核等等技术的学习, 让我对底层的技术越发有兴趣了,而刚好,在研究 WRK 时, 对内存管理,寄存器,地址总 ...
- 8086汇编工作环境_[C语言]什么是编辑器和编译器,什么是集成开发环境?编译原理又是什么?
我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(Executable Program).在 Windows 下,可执行程序的后缀有 .exe 和 .com(其中 .ex ...
- 一览生信分析的各种工作环境—Linux子系统、双系统、虚拟机和Docker
" 本文围绕计算机操作系统,概述了当下各种生信分析的工作环境." 一文掌握Conda软件安装:虚拟环境.软件通道.加速solving.跨服务器迁移 01 - Linux子系统 Wi ...
最新文章
- SQL Server查询某个字段存在哪些表中
- Python3并发检验代理池地址
- linux杀java线程,如何在Linux下找出大量占用CPU的java线程
- Spring Cloud【Finchley】实战-06使用/actuator/bus-refresh端点手动刷新配置 + 使用Spring Cloud Bus自动更新配置
- 时间序列:五种编辑距离和Python实现
- 【学习笔记】Python - NumPy
- STM32开发 -- 惯导模块开发详解
- Exchange与ADFS单点登录 PART 6:Exchange声明规则配置
- leetcode 363. Max Sum of Rectangle No Larger Than K | 363. 矩形区域不超过 K 的最大数值和(前缀和,图文详解)
- 字符串类型、结构体、共用体、枚举、container宏、内存来源
- Oracle 20c 新特性:基础级内存数据库免费功能 In-Memory Base Level
- Win10环境下初始化MySQL
- Unity 艺术字体制作
- 小米C++开发笔试真题
- ios - 农历公历互转 农历选择器
- 免费拿和平精英模拟器
- 2018年算法工程师秋招经验贴(微软、华为、网易游戏、阿里offer)
- Jhipster介绍和使用
- 量子计算机可以发明时光机,俄科学家发明全球第一台时光机,可让微小粒子向过去移动1秒钟...
- mac系统M1pro芯片安装VMware Fusion虚拟机win11操作系统(原创详细版)