A. 精通c語言是達到什麼程度
精通的話,先做個大項目再說。編譯器的錯誤和庫函數的錯誤能找得出來。理解至少一個版本的C語言的標準例如C99。我覺得說精通至少要寫一個類似gcc或者lcc的編譯器功能全部具備,那基本上對C語言的全部語法和語義都了解就可以算精通了。我寫過20多年C語言的程序,但不敢稱精通,因為還有太多的語法現象不能理解。當年的《新編C語言大全》,是那個時代精通C語言的標志。作者對C語言,乃至當時各各版本的編譯器的bug都了如指掌。現在的C語言更加復雜,例如充分了解內聯匯編__asm,內聯inline,易變volatile,函數指針等如何能提高C語言的效率又不會讓編譯器出錯是相當復雜的問題。如果你對我提到的東西都很熟悉,那麼你的C語言可以說已經初步了解了。
B. 如何使用GNU編譯器GCC來編譯Cortex-M3
MinGW是指只用自由軟體來生成純粹的Win32可執行文件的編譯環境,它是Minimalist GNU on Windows的略稱。
實際上 MinGW 並不是一個 單純的C/C++ 編譯器,而是一套 GNU 工具集合。除開 GCC 以外,MinGW 還包含有一些其他的 GNU 程序開發工具 (比如 gawk bison 等等)。
開發 MinGW 是為了那些不喜歡工作在 Linux(FreeBSD) 操作系統而留在 Windows 的人提供一套符合 GNU 的 GNU 工作環境。
所以,使用 MinGW 我們就可以像在 Linux 下一樣使用 GNU 程序開發工具。
GCC 就是 MinGW 的核心所在,GCC 是一套支持眾多計算機程序語言的編譯系統,而且在語言標準的實現上是最接近於標準的。並且 GCC
幾乎可以移植到目前所有可用的計算機平台。(我的電腦上就還裝有 DevKitPro,裡麵包含 GCC 的 ARM(for GBA/DS/GP32)
和 MIPS(for PSP) 版本。)
GCC 本身不像 VC 那樣擁有IDE 界面(在 Windows 上也存在 Dev C++ 之類的支持 MinGW 編譯器的
IDE)。源代碼編輯你可以選用任何你喜歡的文本編輯器(據說微軟的開發人員包括 VC 的開發都不用 VC 所帶的 IDE 編輯器,而是選用 GNU
的 VIM 編輯器)。然後使用 make 等工具來進行軟體項目的編譯、鏈接、打包乃至發布。而像 cvs(svn)
源代碼版本控制工具可以讓世界上任何一個角落的人都可以參與到軟體項目中來。
2.下載MinGW
一種方法是到Sourceforge(http://sourceforge.net/project/showfiles.php?group_id=2435)下載一個MinGW-2.0.0-3.exe。
但是我配置的時候我電腦上安裝了codeblocks,已經自帶了MinGW。
3.環境變數的配置
在(系統屬性-->高級-->環境變數-->系統變數 中)(以下目錄都根據自己的電腦MinGW所在位置不同而改變)
a.在PATH的值中加入「C:\Program Files\MinGWStudio\MinGW\bin」。這是尋找gcc編譯器的路徑。如果PATH中還有其他內容,需要用英文狀態下分號進行分割
b.新建LIBRARY_PATH變數,在其值中加入「C:\Program Files\MinGWStudio\MinGW\lib」。這是標准庫存放的路徑。
c.新建C_INCLUDE_PATH變數,在其值中加入「C:\Program Files\MinGWStudio\MinGW\include」。這是Include查找頭文件的路徑。
4.驗證gcc是否正常運行
在cmd控制台窗口下面,輸入gcc -v。若已經成功安裝好,會顯示gcc的版本信息。
C. 在ubuntu系統中如何用GCC編譯運行一個C程序
1、確定安裝了gcc編譯器後,接下來用vim編輯一個c文件。
D. gcc的使用技巧
首先檢查是否在你的機器上安裝了GCC,使用命令:
可用rpm -q gcc檢查。
如果沒有安裝,請依序檢查並安裝下面各RPM
libbinutils
binutils
make
glibc-devel
gcc-cpp
gcc
看下面的例子:test.c #include<stdio.h>intmain(){char*str=IlikeLinux!;printf(%s,str);return0;}使用gcc編譯。輸入gcc -c test.c得到目標文件test.o.-c命令表示對文件進行編譯和匯編。但並不連接。如果再鍵入gcc -o ../bin/test test.o,那麼將得到名為test的可執行文件。其實這兩步可以一氣呵成,gcc ../bin/test test.c.如果程序沒有錯誤就生成了可執行文件。也許你會覺得基於命令行的編譯器比不上如VC之類的集成開發環境,的確gcc的界面要改進,但是你一旦熟練了就會感到。gcc的效率如此之高。可以告訴大家的是Linux底下強大的C/C++集成開發環境Kdevelop和Vc一樣強大,使用了Gcc編譯器。
GNU C編譯器 即gcc是一個功能強大的ANSI C兼容編譯器,你會操作其他操作系統下的一種C編譯器,能很快掌握GCC.
1、使用Gcc,Gcc是基於命令行的,使用時通常後跟一些選項和文件名。Gcc的基本用法如下: gcc [options] [filenames] 命令行選項制定操作將對命令行上的每個給出的文件執行。
2、GCC的常用選項
編譯選項:gcc有超過100個的編譯選項可用。具體的可以使用命令man gcc察看
優化選項:用GCC編譯C/C++代碼時,它會試著用最少的時間完成編譯並且編譯後的代碼易於調試。易於調試意味著編譯後的代碼與源代碼有同樣的執行順序,編譯後的代碼沒有經過優化。有很多的選項可以告訴GCC在耗費更多編譯時間和犧牲易調試性的基礎上產生更小更快的可執行文件。這些選項中最典型的就是-O和-O2。-O選項告訴gcc對源代碼進行基本優化。-O2選項告訴GCC產生盡可能小的和盡可能快的代碼。還有一些很特殊的選項可以通過man gcc察看。
調試和剖析選項:GCC支持數種調試剖析選項。在這些選項中最常用的是-g和-pg.-g選項告訴gcc產生能被GNU調試器(如gdb)使用的調試信息,以便調試用戶的程序。-pg選項告訴gcc在用戶的程序中加入額外的代碼,執行時,產生gprof用的剖析信息以顯示程序的耗時情況。
3、使用gdb
使用方法:在命令行中鍵入gdb並按回車就可以運行gdb了,啟動gdb後,能在命令行上制定很多的選項,也可以下面的方式來運行gdb: gdb filename 用這種方式運行gdb時,能直接指定想要調試的程序。在命令行上健入gdb -h得到一個有關gdb的選項的說明簡單列表。
編譯代碼以供調試,為了使gdb工作,必須使程序在編譯時包含調試信息,調試信息包含程序里的每個變數的類型,在可執行文件里的地址映射以及源代碼的行號。gdb利用這些信息使源代碼和機器碼相關聯。
關於gcc的大體就寫這么多吧,更多的信息可以查找幫助,記得學習Linux的一大武器man或者info命令,下次在介紹一下使用C/C++編寫大型程序的makefile文件和make命令。
E. 怎麼用gcc編譯文件
在終端中輸入 gcc 文件名 -o 目標文件名x0dx0a然後 ./目標文件名 就行了,沒有目標文件名,自動存為 ax0dx0a執行 ./a 就行了。x0dx0ax0dx0a在使用Gcc編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。GCC編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這里只介紹其中最基本、最常用的參數。x0dx0aGCC最基本的用法是∶gcc [options] [filenames]x0dx0a其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。x0dx0a-c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。x0dx0a-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。x0dx0a-g,產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項。x0dx0a-O,對程序進行優化編譯、連接,採用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢一些。x0dx0a-O2,比-O更好的優化編譯、連接,當然整個編譯、連接過程會更慢。x0dx0a-Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預編譯過程中使用的參數。C程序中的頭文件包含兩種情況∶x0dx0aA)#include
F. 什麼是GCCGCC有什麼作用
GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。
GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)採納為標準的編譯器,GCC同樣適用於微軟的Windows。GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布。
GCC功能與作用:
1、預處理
命令gcc首先調用cpp進行預處理,在預處理過程中,對源代碼文件中的文件包含(include)、預編譯語句(如宏定義define等)進行分析。
2、編譯
用GCC編譯C/C++代碼時,它會試著用最少的時間完成編譯並且編譯後的代碼易於調試。易於調試意味著編譯後的代碼與源代碼有同樣的執行順序,編譯後的代碼沒有經過優化。
3、連接
當所有的目標文件都生成之後,gcc就調用ld來完成最後的關鍵性工作,這個階段就是連接。在連接階段,所有的目標文件被安排在可執行程序中的恰當的位置,同時,該程序所調用到的庫函數也從各自所在的檔案庫中連到合適的地方。
4、匯編
匯編過程是針對匯編語言的步驟,調用as進行工作,一般來講,.S為後綴的匯編語言源代碼文件和匯編、.s為後綴的匯編語言文件經過預編譯和匯編之後都生成以.o為後綴的目標文件。
(6)精通gcc編譯器擴展閱讀:
gcc所遵循的部分約定規則:
1、.c為後綴的文件,C語言源代碼文件。
2、.a為後綴的文件,是由目標文件構成的檔案庫文件。
3、.h為後綴的文件,是程序所包含的頭文件。
4、.i 為後綴的文件,是C源代碼文件且不應該對其執行預處理。
5、.m為後綴的文件,是Objective-C源代碼文件。
6、.o為後綴的文件,是編譯後的目標文件。
7、.s為後綴的文件,是匯編語言源代碼文件。