emacs编译
⑴ 如何在GNU Emacs环境下编译并运行C/C++程序
学习C/C++的朋友有没有想过完完全全的在linux环境下开发软件!?我想过,可能是因为个人对Windows平台有些偏见,或者说个人不是非常喜欢
在Windows下写程序的感觉,总觉得有那么一层膜隔阂着我们,不像Linux,可以做强大的服务器,在终端下只需要使用简简单单的命令便能完成相当复
杂的事情,是不是感觉很高深!?还有很多很多开源项目,Emacs也算一个吧!!!
呵呵,谈到在Linux下编程,我们不得不提这两款编辑器:vi/vim和Emacs(确切的说Emacs的功能已经远远超出了编辑器,使用它我们可能收
发邮件,玩游戏,排版等等)。Emacs的强大不得不让我们对设计出该编辑器的大师们发出崇高的敬意和赞叹,Emacs强大之处不仅仅局限于编辑功能,还
提供的许多自定义选项,还有我们可以不需要动鼠标便可完成日常工作(对于大多数人来说这可能不太现实),下面我只是简要的介绍如何使用Emacs编译/运
行C/C++程序,文中相关命令可以参考本人其他博文。
Emacs有很多版本,如Gnu Emacs、XEmac等等。而且Emacs在各个平台下均能表现的非常出色,前提是你要熟悉它。
首先,再次说明本人所使用的操作系统是rhel 6.2,已经安装GNU Emacs 23.1.1和gcc version
4.4.6,注意Emacs只是一个编辑器,在我们程序员看来(其实我们也可以将其看作IDE,如果使用的比较熟练的话),最起码对于我这种菜鸟来说,还
不能十分熟练的玩转Emacs,它实在是太强大了,以至于有很多知识需要去记忆(不仅仅是快捷键)。
OK,不啰嗦了,下面进入正题:
1.启动Emacs,在终端输入“emacs&”命令后回车(你也可以输入“emacs”命令,不过当你在使用Emacs的时候,当前终端
就不为你工作了;并且如果你熟练使用Emacs的话也可以输入“emacs
-nw”命令以启动非X视窗下的Emacs),至于后面为什么要加一个“&”符,这是Linux里面的基本知识,加上“&”符后会在当前
终端下产生一个子进程以运行Emacs而不会对当前终端的工作造成任何影响,这里我们键入“emacs –nw”命令,启动界面如图1所示;
图1 键入“emacs –nw”命令后,Emacs的启动界面
2.打开/新建文件,进入Emacs界面后,键“C-x
C-f”以打开/创建一个新的文件(如图2所示),建议以C/C++语言里所规定的扩展名来指定创建的文件的扩展名,虽然在Linux下面我们不是十分强
调文件的扩展名,但是如果你选择正当的扩展名的话,将有助于高亮代码,并且Emacs会根据我们创建的文件的扩展名以进行不同语言(要知道,Emacs不
只是为了C/C++程序员设计的)编码风格的缩进;
图2 键“C-x C-f”,输入文件名以打开/创建一个新的文件
3.编辑文件,键“C-x C-s”存盘,本人测试的代码如下:
[cpp] view plain
#include <iostream>
int main( ) {
std::cout << "Hello, Emacs!!!"
<< std::endl;
}
4.编译文件,这里我介绍两种方法。
法1:常规方法,参考Learning Gnu
Emacs,我们可以这样做:键“M-x”,此时在minibuffer中会显示“M-x”字样,输入“compile”命令后默认会显示
“Compile command: make -k”字样,此时把“make -k”删除后,运行相关编译命令(如现在我们应该键入“g++
test.cpp –o test”),如图3所示;
图3 minibuffer下键入“g++ test.cpp –o test”命令以编译源文件
法2:我想大多C/C++程序员会选择第二种编译方法,同样的,键“M-x”,输入“eshell”或“shell”命令,进入“eshell”或
“shell”缓冲区,这里我们键入的命令是“eshell”,然后同样的键入“g++ test.cpp –o
test”命令以编译源文件,如图4所示;
图4 eshell下键入“g++test.cpp –o test”命令以编译源文件
5.运行编译后的可执行文件,同样的按照第4步中的打开eshell缓冲区,输入相关命令即可执行编译后文件,这里我们应该输入“./test”命令,如图5所示。
图5 输入“./test”命令以执行编译后文件
注意:当我们进入其他缓冲区后,再想切换到编辑过的缓冲区可以键入“C-b
buffername”以切换到目的缓冲区。注意编辑(修改)后的缓冲区的名字格式为“*buffername*”,如上面我们切换到
“test.cpp”缓冲区应该buffername应为“test.cpp”,在我们打开“eshell”缓冲区之前我们已将其保存过了,切换到
“test.cpp”后再想切换到之前打开的“eshell”缓冲区的buffername应为“*eshell*”,这个缓冲区我们修改过了;
⑵ C语言编译器有哪些各有什么特点
C语言编译器目前主要有VC++、dev-C++、C-Free、win-TC、TC 2.0等等。
其中比较经典的VC++,微软的产品,编译器,链接器,运行,调试等功能于一体的强大开发工具,特点是功能十分强大,对于新手来说需要一段时间去摸索。
dev-C++是windows下一款开发c/c++的开发环境,使用gcc为编译器,遵循标准,功能比较强大,语法高量,可以进行单步调试(这对排除错误很重要),进行断点设置等功能,遵循C标准,是一款很强大的开发工具。
C-Free是一款支持多种编译器的专业化C/C++集成开发环境(IDE)。利用C-Free,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。
TC 2.0:Borland公司的产品,在dos界面下编译运行,小巧、灵活,但是不能使用鼠标。
win-TC:在tc2.0的基础上加上了界面,能够使用鼠标,具有语法高量,可以嵌入汇编等特点,对新手一些,拜托了不能用鼠标的困难。
编译器,简单讲,就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)。
⑶ 如何在GNU Emacs环境下编译并运行C/C++程序
1.启动Emacs,在终端输入“emacs&”命令后回车(你也可以输入“emacs”命令,不过当你在使用Emacs的时候,当前终端就不为你工作了;并且如果你熟练使用Emacs的话也可以输入“emacs -nw”命令以启动非X视窗下的Emacs),至于后面为什么要加一个“&”符,...
⑷ emacs编写c++
第一步,输入命令emacs main.cpp 编写c++代码
第二步,在emacs软件下依次输入Control+x,Control+s,这是保存cpp文件
第三步,在emacs软件下依次输入Control+x,Control+c,这是退出emacs编辑软件
第四步,在main.cpp文件所在的路径下,输入g++ -o main main.cpp,这是对cpp文件进行编译,此步会生成一个可执行文件main
第五步,输入./main 即可运行所编译的可执行文件
⑸ emacs编辑器的下载及使用安装问题
win下使用emacs不会是个好选择,但是也看个人喜好。
在xp和win7下使用过emacs,win8如此高大上的系统,没用过。想来emacs在win8下也不会有太大问题。下载区gun的主页就行了,这里有emacs for windows的gun下载主页:
http://ftp.gnu.org/gnu/emacs/windows/
向下拖,最后的列表,建议下emacs24.3版本。emacs的更新是很实在的,不会说像一些国产商业软件一样,屁大点事都弄个更新,eamcs每次更新都会有很大的变化,而且新版本稳定后也更好用。
emacs在win中安装有2中方式:直接下载二进制文件 和 下载源码编译。
一般来说,直接从上面的连接下载编译好的emacs就行了,这个一般是用MGwin在windows下编译的。自己弄的话,下个mgwin或cygwin,手动make编译,但不推荐这么做,挺折腾,各种依赖包,时间也很长。如果真想体验一把,请另行网络,有教程。
eamcs想在win下用的舒坦对新手来说不是件容易的事。不清楚是谁鼓动你在win下用emacs写C的。如果你没有特殊的需求,比如,主要开发工作针对linux,建议你直接使用VS来写VC,方便直接,开箱即用。
emacs是个geek味道很浓的东西,具体体现就是:
没插件啥也干不好
插件安装千奇百怪没有统一的方式,好在24.3的elpa一定程度上缓解了到处找插件的问题,但是治标不治本。
配置过程是在使用elisp编程,门槛相对较高,起码比鼠标点来点去高不少
插件之间存在一些冲突,因为都是爱好者开发的,单个插件可能经过测试,但是这些东西放一块好不好使,只有天知道。当然,知名的插件肯定是没问题的,但是那些偏门的东东,就不好说了。
emacs使用,包括插件自带的说明文档,都不可能有中文支持,纯英文虽然很练水平,但是对一些人,起码是我来说,很头痛。
基本就是这些。不是说emacs有什么不好,都说高手才会使用emacs,所以这个东西,从来都不是对新手准备的,对新人相当的不友好。如果你用过vim,可能会觉着emacs初始的工作方式比vim好太多,起码不会按个esc就啥也输不进去。但是相信我,你被骗了,真的。想让此等神器按你的方式工作,不折腾个欲仙欲死是不大可能了。geek么,就喜欢折腾,如果你是这样的人,恭喜你,你找到了世界上最好玩的玩具,它能从各方面满足你折腾与探索之心,尽情享吧。
如果你还是想用eamcs,体验下这个gnu的拳头产品的魅力,下面可以给点建议:
下载emacs后,请完成最基本的配置,找到.emacs.d和.emacs文件所在位置,这个在windows下很多人一头雾水。如果有疑惑,请网络 emacs中文网。推荐用注册表方式指定home目录。
做好心理准备,最少在一星期之内,你不可能用它开始工作。
花半个小时看emacs toturial。emacs刚启动的欢迎界面上有连接,也可以在help菜单下找到
熟悉了基本,可以去网上点配置贴到.emacs文件中,顺带瞅瞅elisp的尊容,以后要经常和它打交道。在这个过程中,你会见识到emacs在几行elisp代码下翻天覆地的变化,起码表面上看起来,完全就是2个东西。
推荐篇文章:“一年成为eamcs高手”http://blog.csdn.net/redguardtoo/article/details/7222501 想少走弯路,可以严格按照上面说的做。
如果你看了第5条,觉着有道理,请下载牛人的配置,去github逛逛吧,你需要一个gitextension,请自行安装,这个可以帮你在后面方便地管理你的.eamcs.d文件夹。配置新手推荐 emacs-starter-kit或者prelude,它们都在github上,请自行搜索。我用的是第二个,配置比较基础,感觉还不错。
如果你已经会用牛人配置的基本功能了而且还对emacs有很大的热情,可以着手配置C开发环境了。
下面说说emacs下C开发环境的搭建,基本的插件有这几个:
ecb cedet tabbar tabbar-ruler yasnippet auto-complete
分别说说:
ecb,emacs code browser,用于浏览代码,大致看起来是这个样子:
具体安装一言难尽,请多网络谷歌。这个时候网络不一定好使,google相对可靠的多。这个是emacs插件的配置,还缺mgwin,这个要额外配置,添加exec-path。具体请网络,我没配过,我emacs都是org写文档用的,偶尔骚包用eamcs写,回头VS编译。
如果上面的你都折腾过了,你应该会发现新的问题:老子折腾了这么久,为什么感觉还没个VC6+VAX来的实在?问题出在cedet的组件semantic上。它负责进行语法分析,生成tags,显示函数,进行跳转和补全。但是这个东西是基于静态分析的且是纯elisp实现的,效率上可想而知。VS的补全是动态进行的且它本身可以利用编译器的分析结果,所以速度快,补全能力很强。semantic则相反,它不能利用编译器生成的语法分析树,自己扫描静态文件,这个效率可想而知。解决方法么,在linux下有个GCC的修改版本,可以将分析结果借用给semantic,貌似要额外进行一些配置,这样配置过后,semantic就会快很多,起码不会出现打开个C文件,分析半分钟这么夸张。同样的问题出在auto-complete和yasnippet上。它们同样没有编译器分析结果做支持,所以补全基本是基于缩略词的,相当的不智能。这些是emacs作为C开发环境的缺点。
这些问题的出现,并不是emacs本身不够强,实在是没有大厂商的支持,靠一群爱好者进行义务开发和维护,很大程度上限制了eamcs作为IDE上的能力。本身这个也不是大问题,emacs被爱好者称为操作系统,IDE只是人们对它的一个期望罢了,这本来也不是它的强项,通用和扩展性才是它的灵魂。用emacs和VS比C开发效率,这本来就不公平,有本事你也去linux命令行跑跑看嘛。
lz加油吧,每个喜爱emacs并为之付出的人,都会得到回报。不要太过计较一时的得失,emacs绝对是值得信赖的工具,值得你为他付出。这个道理其实很简单:除了emacs,你再也找不出一个程序,能够完全按照你的意愿工作。
emacs的神奇来源于它惊天地泣鬼神的设计理念:编写lisp解释器,解释elisp语言,来制作一个编辑器,这本来就是天才的构想。在emacs的世界里,绝大多数的功能都是lisp函数的求值带来的。任何的按键,都会触发解释器对elisp函数或C函数的求值,运行,然后产生响应的行为。这点可以在eamcs中使用C-h k 来验证,这个快捷键绑定到了describe-key,可以描述你的按键所触发的函数,它的功能和所在的文件,你可以很方便地进入这个文件内部观察elisp实现。emacs根本就是个解释器+脚本语言的黄金搭档。通过elisp编程,你能控制emacs的任何行为,自己编写elisp函数实现一些自动化操作,比如通过一个按键自动格式化当前buffer中的所有代码,编写正则匹配函数并绑定到响应快捷键,这样可以通过按下你绑定的按键序列,让emacs自动隐藏指定的行,比如注释,自动替换选中区域的指定字符序列等等。
总之,emacs无所不能,这个源于它奇思妙想的伟大设计。
以上。
⑹ Emacs有什么优点,用Emacs写程序真的比IDE更方便吗
一个IDE无非包括如下一些功能模块:
一个编辑器;
一个编译器;
一个调试器;
其它一些辅助功能,比如用鼠标拖控件。
什么是最好的IDE?那肯定是
最好的IDE = 最好的编辑器 + 最好的编译器 + 最好的调试器有哪个IDE做到这一点了吗?只有Emacs。Emacs可以很方便地调用世界上最牛的编译器(gcc),和调试器(gdb)。也许你会说“Emacs不能拖控件啊”,没错,但在我看,拖控件并不总是一个受人欢迎的功能,至少在系统编程的时候,它毫无用处。
而
且,从学习的角度来说,“用鼠标编程”绝对是一个非常恶劣的习惯,因为这根本就是在逃避学习。“鼠标化的IDE”隐藏了很多学生应该了解的技术细节。鄙学
院的绝大多数学生居然不知道C程序是要编译之后才能运行的,他们以为写好了程序,只要“按那个“感叹号”按钮”就可以了。这就是“鼠标教学”的成果(你肯
定知道C编程这门课不归我管)。Emacs可以帮助你克服“鼠标依赖”,强迫你熟练地使用键盘。
更重要的是,Emacs不只是个IDE,
它是个ICE(Integrated Computing
Environment,这名字是我刚编出来的)。Emacs的设计目标就是,你装了个Unix或者Linux系统,不需要装任何其它软件,只要装一个
Emacs就够了,它能帮助你完成所有的任务。也就是说,除了编程,你还可以用它写论文、做幻灯片、浏览网页、收发邮件、聊天、听歌、看照片、玩游戏……
目前,好像除了直接在Emacs里看电影还不行,其它的都实现了。
Emacs如此“大一统”的设计目标显然有违Unix的设计原则,do
one thing, and do it well. 但好在Emacs是模块化的,它的每一个功能模块都绝对遵循do one thing,
and do it well原则。你不喜欢那些功能,可以不装它。
另外,还是从学习的角度来说,Emacs的学习曲线貌似比其他IDE要长不少,但是你
不必学习VC去写C/C++,
不必学习eclipse去写Java,
不必学习MS-Word去写报告、幻灯片,
不必学习……
一句话,“Everything Emacs”,可以省下大量不必要的学习时间。人生苦短,何必让你的生活被 VC/eclipse/MS-Word 搞得头昏脑胀呢? 简单而强大,本就是计科专业学生和非专业学生应有的不同 。
Emacs
绝对强大,但是否“方便”就不好说了。因为“方便”是一个很主观的概念。反正,作为一个18年的老用户,我肯定觉得方便。其他IDE太无聊了,那么花哨而
庞大的东西,却只适用于应用层编程。既不能用来写论文,又不能做幻灯片,更不能用来听歌、玩游戏。生活也太没有乐趣了。
最后一点,Emacs还是一个巨大的开放社区,在这里你能结识到更酷一些的程序员。
Emacs入门还是很简单的,它自带了一个基础教程。打开Emacs,按 Ctrl-h t , 教程就出现在你面前了。照着它边看边练,英文不太困难的话,一个小时应该可以走一遍了。之后,
Ctrl-h i m emacs就可以调出详细的Emacs使用手册;
Ctrl-h i m emacs lisp intro 可以调出Emacs Lisp入门教程;
Ctrl-h i m elisp 可以调出完整的elisp编程手册。
当然,Google永远是你最好的帮手。
⑺ Vim 和 Emacs 分别适合哪些人群优劣势的对比如何
一、Vim是一个类似于Vi的着名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是纯粹的自由软件。
Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。
但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs同样都是非常优秀的文本编辑器。
二、EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理乍得·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。
自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。
Emac使用Emacs Lisp,这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。
三、对比:
1、vim内置脚本语言有局限性,emacs的lisp语言更加强大。
2、功能上来讲emacs可以做编辑器以外的很多事情。
比如很多软件都可以使用emacs作为前端。
3、一般来说vim只用作编辑器,或者是一个繁琐的IDE。
虽然vim可以通过脚本干一些别的事情,但是效率上总是不合适的。