❶ 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)。
❷ 介紹一下linux環境下C的編寫
先安裝GCC編譯器
1. 下載
在GCC網站上(http://gcc.gnu.org/)或者通過網上搜索可以查找到下載資源。目前GCC的最新版本為 3.4.0。可供下載的文件一般有兩種形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是壓縮格式不一樣,內容完全一致,下載其中一種即可。
2. 解壓縮
根據壓縮格式,選擇下面相應的一種方式解包(以下的「%」表示命令行提示符):
% tar xzvf gcc-3.4.0.tar.gz
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf -
新生成的gcc-3.4.0這個目錄被稱為源目錄,用${srcdir}表示它。以後在出現${srcdir}的地方,應該用真實的路徑來替換它。用pwd命令可以查看當前路徑。
在${srcdir}/INSTALL目錄下有詳細的GCC安裝說明,可用瀏覽器打開index.html閱讀。
3. 建立目標目錄
目標目錄(用${objdir}表示)是用來存放編譯結果的地方。GCC建議編譯後的文件不要放在源目錄${srcdir]中(雖然這樣做也可以),最好單獨存放在另外一個目錄中,而且不能是${srcdir}的子目錄。
例如,可以這樣建立一個叫 gcc-build 的目標目錄(與源目錄${srcdir}是同級目錄):
% mkdir gcc-build
% cd gcc-build
以下的操作主要是在目標目錄 ${objdir} 下進行。
4. 配置
配置的目的是決定將GCC編譯器安裝到什麼地方(${destdir}),支持什麼語言以及指定其它一些選項等。其中,${destdir}不能與${objdir}或${srcdir}目錄相同。
配置是通過執行${srcdir}下的configure來完成的。其命令格式為(記得用你的真實路徑替換${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它選項]
例如,如果想將GCC 3.4.0安裝到/usr/local/gcc-3.4.0目錄下,則${destdir}就表示這個路徑。
在我的機器上,我是這樣配置的:
% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java
將GCC安裝在/usr/local/gcc-3.4.0目錄下,支持C/C++和JAVA語言,其它選項參見GCC提供的幫助說明。
5. 編譯
% make
這是一個漫長的過程。在我的機器上(P4-1.6),這個過程用了50多分鍾。
6. 安裝
執行下面的命令將編譯好的庫文件等拷貝到${destdir}目錄中(根據你設定的路徑,可能需要管理員的許可權):
% make install
至此,GCC 3.4.0安裝過程就完成了。
6. 其它設置
GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、庫文件等都在${destdir}目錄下分別存放,如命令文件放在bin目錄下、庫文件在lib下、頭文件在include下等。由於命令文件和庫文件所在的目錄還沒有包含在相應的搜索路徑內,所以必須要作適當的設置之後編譯器才能順利地找到並使用它們。
6.1 gcc、g++、gcj的設置
要想使用GCC 3.4.0的gcc等命令,簡單的方法就是把它的路徑${destdir}/bin放在環境變數PATH中。我不用這種方式,而是用符號連接的方式實現,這樣做的好處是我仍然可以使用系統上原來的舊版本的GCC編譯器。
首先,查看原來的gcc所在的路徑:
% which gcc
在我的系統上,上述命令顯示:/usr/bin/gcc。因此,原來的gcc命令在/usr/bin目錄下。我們可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目錄下分別做一個符號連接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
% ln -s ${destdir}/bin/gcj gcj34
這樣,就可以分別使用gcc34、g++34、gcj34來調用GCC 3.4.0的gcc、g++、gcj完成對C、C++、JAVA程序的編譯了。同時,仍然能夠使用舊版本的GCC編譯器中的gcc、g++等命令。
6.2 庫路徑的設置
將${destdir}/lib路徑添加到環境變數LD_LIBRARY_PATH中,最好添加到系統的配置文件中,這樣就不必要每次都設置這個環境變數了。
例如,如果GCC 3.4.0安裝在/usr/local/gcc-3.4.0目錄下,在RH Linux下可以直接在命令行上執行或者在文件/etc/profile中添加下面一句:
setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH
7. 測試
用新的編譯命令(gcc34、g++34等)編譯你以前的C、C++程序,檢驗新安裝的GCC編譯器是否能正常工作。
8. 根據需要,可以刪除或者保留${srcdir}和${objdir}目錄。
如果用的是ubuntu或者是fedora的話 可以在源里直接安裝
用自帶的文本編譯器寫好文件後 打開「終端」輸入Gcc 就好了
❸ Linux操作系統中默認安裝的C語言編譯系統是
Linux操作系統中默認安裝的C語言編譯系統是GCC(GNU Compiler Collection),是Linux下最常用的C語言編譯器,是GNU項目中符合ANSI,C標準的編譯系統,能夠編譯用C、Object C等語言編寫的程序。
同時它可以通過不同的前端模塊來支持各種語言,如Java、Fortran、Pascal、Mola,3和Ada等。
C語言的標准
1.1 K,RC
1973年,Dennis M Ritchie設計和實現了C語言,從那以後使用者逐漸增加。
1978年,Kernighan 和 Ritchie 合著了《The C Programming Language》,這本書定義的C語言被稱為 K,RC 。
1.2 標准 C
隨著C語言使用日益廣泛,出現了許多新問題,人們迫切希望對C語言進行標准化。
第一個標准:C89
1983年,ANSI成立了一個委員會X3J11,對C語言進行標准化。
1989年,ANSI 批准了第一個C語言標准 X3,159-1989,並於1990年公布,被稱為 ANSIC、C89 或 C90。
1990年,這個標准又被批准為ISO標准:ISO,IEC 9899:1990 。
ANSIC標准被ISO採納,並且ISO發布的修訂版也被ANSI採納,因此ANSI標准和ISO標准實際上沒有技術區別。這些名稱的含義是相同的:ANSI C、ISO C、標准C。
1994年和1996年,ISO發布了兩個技術更正,更正了1990ISOC標准中的錯誤。
第二個標准:C94
1995年,ISO發布了1990ISOC標準的一個補充,稱為AMD1。擴充後的標准被稱為C94或C95。
第三個標准:C99
1999年,ISO發布了一個新版本的ISOC標准:ISO,IEC9899:1999,稱為C99。
2001年、2004年和2007年,ISO發布了三個技術更正,更正了1999ISOC標准中的錯誤。
第四個標准:C11
2011年,ISO發布了一個新版本的ISOC標准:ISO,IEC9899:2011,稱為C11。C11 是 C語言的最新標准。
1.3 GNUC
1984年,Richard Stallman 發起了GNU計劃,它的目標是開發一個完整且自由的Unix-like操作系統(GNU系統)。
GNU系統是一個完整的操作系統,包括操作系統內核和各種工具軟體。各種GNU系統的變種(例如Redhat、Ubuntu等)已經被廣泛使用,它們使用的操作系統內核都是Linux。雖然這些系統經常被稱為Linux,但准確地說,它們是GNU/Linux系統。
GNU在編寫Linux時擴展了標准C,稱為GNUC。
GNU C的擴展詳見:Extensions to the C Language Family
GNU C也稱為Linux C,一般用於Linux上的開發,而標准C可以跨平台。
GNU C使用的編譯器是GCC。
❹ 怎麼在Redhat linux下搭建C編程環境
要想在Linux下進行C語言編程,首先得搭建好一個編程環境。這里分別說明一下幾個非常有用的軟體包。
如果你對Linux下軟體安裝方法還不清楚,請參考文章「Linux下軟體安裝方法總結」http://zhoulifa.bokee.com/5444771.html
1、gcc
要進行C語言編程,首先得有個C語言的編譯器,Linux下常用的是GNU C Compiler gcc。
gcc軟體是用來提供默認值的。從Depends可以看出要gcc真正工作必須有對應的cpp和gcc版本。
比如cpp-4.1和gcc-4.1、cpp-3.3和gcc-3.4
2、gcc-*
3、cpp
gcc要進行程序編譯,首先需要進行一個預編譯過程。該過程對程序源代碼進行預處理。
4、cpp-*
5、libgcc1
gcc還依賴於libgcc1這個軟體包。libgcc1是用於gcc軟體自身的必須組件。
6、libc6
C語言程序要能夠運行,需要一些運行時庫文件和一些庫文件操作命令。libc6這個軟體包就是用來提供這些的。這個軟體包幾乎是Linux系統自帶的,因為所有C程序的運行都離不開此軟體包。
7、binutils
程序從源代碼到可執行程序的過程中,必然需要一些工具來輔助完成。binutils軟體包就是提供一些工具的
這個軟體包提供下面這些非常有用的命令:
/usr/bin/size # 顯示每個目標文件或歸檔文件的章節大小和總的大小
/usr/bin/objmp # 顯示目標文件的信息
/usr/bin/ar # 歸檔文件管理工具,可以創建、修改或打開一個歸檔文件
/usr/bin/strings # 顯示一個文件中的可列印字元串,比如文本文件的全部或目標文件里的字元串
/usr/bin/ranlib # 產生歸檔文件的索引
/usr/bin/obj # 復制或轉換目標文件
/usr/bin/addr2line # 把一個地址信息轉換為文件名和行號
/usr/bin/readelf # 顯示 ELF 文件信息, ELF 文件格式即 Linux 目前流行的可執行文件格式
/usr/bin/nm # 顯示目標文件里的符號
/usr/bin/strip # 去除目標文件里的符號
/usr/bin/c++filt # 識別 C++ 和 Java 符號
/usr/bin/as # GNU 匯編工具
/usr/bin/gprof #
/usr/bin/ld # GNU 鏈接工具
8、locales
這個軟體包提供本地語言環境支持
雖然上面列了這么多必需的軟體包,但實際上因為他們之間有依賴關系,所以在安裝完系統後我們只需要輸入下面一個命令:
apt-get install gcc
系統就會自動幫忙把這些軟體包安裝上。
9、libc6-dev
我們要進行軟體開發,必然需要一些庫文件和頭文件,在Linux常用的就是GNU的C語言庫libc,要安裝開發工具必須安裝這個libc6-dev軟體包
11、glibc-doc-reference
理由同上,編程人員最喜歡的參考手冊就是這個軟體包了,可以稱為Linux下C語言編程參考。
此參考手冊有html和info兩種格式,你可以用瀏覽器打開/usr/share/doc/glibc-doc-reference/html目錄下的手冊一頁頁看。把這里每個網頁一點點看完了學會了基本上沒有搞不定的問題了。
12、manpages-dev
在編程的過程中有時會記不得某個函數的用法,通常這時查man手冊是比較快的,所以把這個manpages-dev軟體包安裝上。想要看某個函數的用法就man它。
這個軟體包提供系統調用和庫函數的在線手冊。
13、make
在進行大項目時,通常我們的程序可能是由很多源文件組成的,各個源文件生成自己的目標文件,多個目標文件才鏈接形成一個新的目標文件或可執行程序。
在某個源文件發生變化時,我們只需要按照這種依賴關系運行各命令重新生成程序即可,而不需要對所有源文件重新編譯。哪個該重新編譯呢?可以讓make程序幫忙 維護
14、make-doc
要運行make工具,先得學會怎麼用它吧?看這個軟體包提供的文檔就行了。
安裝好這個軟體包後,用瀏覽器打開/usr/share/doc/make-doc/make.html文檔開始學習make的用法吧。
15、gdb
編寫程序必然需要調試,在Linux常用的程序調試工具是gdb
16、gdb-doc
有了上面的gdb程序調試工具了,怎麼學會使用它呢?安裝這個軟體包gdb-doc,即gdb的文檔
安裝好軟體後就可以通過電腦上的文檔自學gdb的使用了。
17、編輯器
要編寫C程序,總得有個編輯工具吧?Linux下這類工具相當多,關鍵在於熟練掌握一種。
比如文本界面的編輯器vi, vim, emacs等
比如圖形界面的編輯器gedit, kate, kwrite等
又比如IDE環境的:anjuta, eclipse, kdevelop等
選擇一個自己習慣的熟練使用起來就行了。
這些只是基本的Linux下C編程環境必須的軟體包。如果這些熟練掌握了,可以試試下面這些軟體包:
autoconf, automake1.9, libtool, flex, bison
當然還有對應的文檔用於自學。
甚至可以試試IDE環境下其它語言編程,比如gtk, qt等
❺ Linux系統中的redhat的常用輸入命令有哪些
redhat linux的命令
一. 啟動,關機,登入,登出相關命令
<login> 登錄
<logout> 登出
<exit> 登出
<shutdown> 停止系統
<halt> 停止系統
<reboot> 重啟動
<poweroff> 切斷電源
<sync> 把內存里的內容寫入磁碟
<lilo> 安裝lilo啟動管理程序
<grub> 安裝lilo啟動管理程序
二. Shell相關命令
<chsh> 切換Shell
<history> 顯示命令履歷
<alias> 設置命令別名
<unalias> 取消命令別名
<which> 顯示命令所在位置
<type> 查詢命令種類
<echo> 顯示字元串或者變數內容
<set> 設置/顯示Shell變數
<printenv> 顯示環境變數
<export> 設置環境變數
<env> 設置臨時環境變數
<unset> 釋放環境變數
<setenv> 設置環境變數
<unsetenv> 釋放環境變數
<source> 執行文件當中的命令
<man> 查詢命令手冊
<info> 查詢超文本命令手冊
<whatis> 顯示命令簡介
<apropos> 通過關鍵字查詢手冊
三. 用戶管理相關命令
<su> 切換到其他用戶
<useradd> 追加用戶
<adser> 追加用戶
<userdel> 刪除用戶
<usermod> 修改用戶設置
<chfn> 修改用戶私人信息
<groupadd> 追加組
<groupdel> 刪除組
<groupmod> 修改組設置
<passwd> 更改密碼
<whoami> 顯示用戶名
<logname> 顯示登錄用戶帳號
<users> 顯示所有登錄用戶信息
<who> 查詢登錄用戶信息
<w> 查詢登錄用戶信息
<id> 顯示指定用戶的ID信息
<groups> 顯示指定用戶的所屬組
<finger> 顯示指定用戶的個人信息
<mesg> 開關與他人收發消息
<write> 給其他用戶發消息
<wall> 給所有用戶發消息
<talk> 和其他用戶聊天
四. 系統消息相關命令
<date> 顯示/設置當前時間
<uptime> 顯示系統運行時間
<arch> 顯示機器的核心構架(如i386)
<uname> 顯示操作系統信息
<tty> 顯示終端名
<last> 顯示登錄/登出在履歷
<lastb> 顯示非法登錄信息
<mpkeys> 顯示當前鍵盤配置
<loadkeys> 變更鍵盤配置
<df> 查詢磁碟使用信息
<> 查詢磁碟使用信息
<dmesg> 顯示系統啟動消息
<script> 保存輸入輸出到文件
五. 文件操作相關命令
<ls> 顯示文件列表
<tree> 顯示目錄樹
<pwd> 顯示當前路徑
<cd> 更改當前路徑
<pushd> 追加路徑到目錄堆棧
<popd> 從目錄堆棧刪除路徑
<dirs> 顯示目錄堆棧的內容
<mkdir> 創建路徑
<rmdir> 刪除路徑
<cp> 復制文件/目錄
<rm> 刪除文件/目錄
<mv> 移動文件/目錄,修改文件名
<chown> 更改文件/目錄的所有者
<chgrp> 修改文件/目錄的所有組
<chmod> 修改文件/目錄的許可權
<touch> 更改文件時間
<ln> 建立文件/目錄鏈接
<find> 查找文件
<whereis> 顯示文件存在的路徑名
<file> 查詢文件種類
<size> 查詢文件大小
六. 文件編輯相關命令
<cat> 顯示文件內容
<tee> 輸出到文件和屏幕
<more> 分屏顯示文件內容
<less> 分屏顯示文件內容
<head> 顯示文件頭部內容
<tail> 顯示文件尾部內容
<fold> 折疊顯示長行
<sort> 排列文件的行
<cmp> 比較文件內容
<diff> 顯示文件差異
<nkf> 更改日語文件編碼
<dd> 變更文件之後復制
<wc> 統計文本單詞數,文件大小等
<split> 分割文件
<paste> 以行連接文件
<join> 以欄位連接文件
<grep> 查詢文字
<uniq> 過濾重復部分顯示文件內容
<tr> 替換文字
<sed> 替換文字
七. 壓縮/解壓縮相關命令
<ar> 壓縮/解壓縮文件
<tar> 壓縮/解壓縮文件
<compress> 壓縮/解壓縮文件
<uncompress> 解壓縮
<gzip> 壓縮/解壓縮文件
<gunzip> 解壓縮
<zcat> 顯示壓縮文件的內容
<lha> 壓縮/解壓縮文件
<uuencode> 把二進制文件編碼為文本文件
<uudecode> 把經過編碼的文本文件還原為二進制文件
八. MS-DOS工具集[mtools]命令
<mdir> 顯示文件列表
<mcd> 改變當前目錄
<mmd> 新建目錄
<mrd> 刪除目錄
<mdeltree> 刪除目錄樹
<m> 復制文件
<mdel> 刪除文件
<mmove> 移動文件
<mren> 更改文件或目錄名
<mattrib> 修改文件屬性
<mtype> 顯示文件內容
<m> 查詢文件或目錄大小
<minfo> 顯示磁碟信息
<mformat> 以MS-DOS方式格式化磁碟
<mlabel> 設置磁碟標簽
九. 控制外部設備相關命令
<mount> mount上設備
<umount> 解除已經mount上的設備
<eject> 彈出(CD/DVD等)
<fdformat> 格式化軟盤
<fdisk> 配置/顯示硬碟分區
<mkfs> 格式化磁碟分區
<fsck> 檢查/修復磁碟錯誤
<lpr> 列印到列印機
<lprm> 中斷列印任務
<lpq> 顯示列印任務的狀態
<lpc> 管理/控制列印任務
<ifconfig> 顯示/設定NIC配置
十. 進程及任務管理相關命令
<ps> 顯示正在運行的進程
<jobs> 顯示後台運行任務
<fg> 把任務切換到前台
<bg> 把任務切換到後台
<kill> 中止進程或任務
<killall> 中止進程或任務
<wait> 等待進程或任務的結束
<at> 設置定時執行任務
<atq> 顯示尚未執行的任務
<atrm> 刪除定時執行任務
<batch> 在系統負荷減輕的時候執行任務
<nice> 改變優先度並執行任務
<nohup> 在後台執行任務,Logout之後也不退出
<sleep> 休眠一定的時間
十一. 網路管理相關命令
<netstat> 顯示當前網路連接狀況
<route> 顯示/設置路由
<host> 顯示網路主機情況
<hostname> 顯示/設置當前主機的名字
<ping> 確認和遠程機器的連接情況
<traceroute> 顯示路由信息
<rwho> 查詢網上機器的登陸用戶
<ruptime> 查詢網上機器的系統運行時間
<rlogin> 登陸到遠程機器
<telnet> 用telnet登陸到遠程機器
<rsh> 給遠程機器發送命令
<rcp> 在遠程機器之間復制文件
<mail> 收取郵件
<sendmail> 發送郵件
<mailq> 確認郵件隊列
<ftp> 用ftp傳輸文件
十二. 其他命令
<cal> 顯示日歷
<clear> 清屏
<gcc> 編譯C語言代碼
<as> 匯編
<bc> 計算
<rpm> Redhat的包管理
<dpkg> Debian的包管理
<installpkg> Slackware的包安裝(刪除命令則是removepkg)
<XF86Setup,turboxfg,Xconfigurator> 配置 X 伺服器
<startx> 啟動 X-Window 系統
附:組合命令
重定向,如
$ ls -l /bin > ls-output
$ more ls-output
管道命令,如
$ cat file1 file2 | sort | uniq
經常被用於管道的命令
awk, fold, grep, head, nnkf, pr, sed, sort, tail, tee, tr, uniq, wc
很多了