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可以通過腳本干一些別的事情,但是效率上總是不合適的。