在Linux下編譯C或C++程序的教程
在Linux下編譯C或C++程序的教程
從開(kāi)始學(xué)習(xí)C/C++我們都在是windows下,那么如何(怎樣)在linux中編譯C/C++代碼?在linux終端下(命令行中)編譯譯C/C++代碼?接下來(lái)是小編為大家收集的在Linux下編譯C或C++程序的教程,希望能幫到大家。
在Linux下編譯C或C++程序的教程
在任何linux分支下編譯C/C++代碼,如 Ubuntu ,Red Hat, Fedora ,Debian 以及其他linux分支上,我們需要安裝一下軟件包:
1.GNU C and C++ compiler collection
2.Development tools
3.Development libraries
4.IDE or text editor to write programs
第一步:安裝 C/C++ 編譯器和相關(guān)工具包
如果你是使用Fedora, Red Hat, CentOS, or Scientific Linux,可以使用yum命令快速安裝GNU c/c++ 編譯器:
?
1 | [root@dabu.info ] # yum groupinstall 'Development Tools' |
如果你是使用 Debian , Ubuntu Linux ,則輸入apt-get命令來(lái)安裝裝GNU c/c++ 編譯器;
?
1 2 | [dabu@dabu.info ]$ sudo apt-get update [dabu@dabu.info ]$ sudo apt-get install build-essential manpages-dev |
第二步:確認(rèn)是否安裝成功
輸入以下命令,顯示編譯器版本和安裝的文件夾:
?
1 2 3 | [dabu@dabu.info ]$ whereis gcc [dabu@dabu.info ]$ which gcc [dabu@dabu.info ]$ gcc --version |
輸出如下圖:
如何(怎樣)在linux中編譯C/C++代碼
創(chuàng)建一個(gè)demo.c文件,使用vi ,emacs 或者 joe 將下列c源代碼輸入進(jìn)去:
?
1 2 3 4 5 6 7 | #include<stdio.h> /* demo.c: My first C program on a Linux */ int main( void ) { printf ( "Hello! This is a test prgoram.\n" ); return 0; } |
接著進(jìn)行編譯:
編譯的使用語(yǔ)法如下:
?
1 | [dabu@dabu.info ]$ gcc program- source -code.c -o executable- file -name |
或者
?
1 | [dabu@dabu.info ]$ cc program- source -code.c -o executable- file -name |
解釋:program-source-code.c是C源代碼,executable-file-name是編譯后得到的可執(zhí)行文件
又或者
?
1 | [dabu@dabu.info ]$ make executable- file -name #假設(shè)executable-file-name.c 這個(gè)文件存在 ## |
下面以demo.c舉例來(lái)將demo.c編譯成可執(zhí)行文件:
輸入:
?
1 | [dabu@dabu.info ]$ cc demo.c -o demo |
或者
?
1 | [dabu@dabu.info ]$ make demo #假設(shè)demo.c在當(dāng)前文件夾下存在 |
如果你的C/C++源代碼沒(méi)有錯(cuò)誤,編譯器就會(huì)編譯成功同時(shí)在當(dāng)前目錄下創(chuàng)建一個(gè)叫做demo的可執(zhí)行文件。否則,源代碼有錯(cuò)誤,你需要修正后重新編譯。輸入下面的命令來(lái)確認(rèn)生成了可執(zhí)行文件:
?
1 | [dabu@dabu.info ]$ ls -l demo* |
如何(怎樣)在linux上運(yùn)行或者執(zhí)行這個(gè)叫做demo的可執(zhí)行文件
輸入以下命令:
?
1 | [dabu@dabu.info ]$ . /demo |
或者
?
1 | [dabu@dabu.info ]$ /path/to/demo #即demo文件的絕對(duì)路徑 |
會(huì)話過(guò)程如下圖:
編譯和運(yùn)行一個(gè)簡(jiǎn)單的C++程序
創(chuàng)建一個(gè)文件名為demo2 ,將下面的代碼保存到該文件中;
?
1 2 3 4 5 6 7 | #include "iostream" // demo2.C - Sample C++ prgoram int main( void ) { std::cout << "Hello! This is a C++ program.\n" ; return 0; } |
編譯demo2.c ,輸入:
?
1 | [dabu@dabu.info ]$ g++ demo2.C -o demo2 |
或者
?
1 | [dabu@dabu.info ]$ make demo2 |
運(yùn)行得到的可執(zhí)行文件,輸入:
?
1 | [dabu@dabu.info ]$ . /demo2 |
如何(怎樣)生成為GDB調(diào)試信息和警告信息?
C 使用以下語(yǔ)法;
?
1 | [dabu@dabu.info ]$ cc -g -Wall input.c -o executable |
解釋:-Wall表示生成所有警告信息。-g表示生成調(diào)試信息
C++使用以下語(yǔ)法:
?
1 | [dabu@dabu.info ]$ g++ -g -Wall input.C -o executable |
如何(怎樣)在linux上得到優(yōu)化代碼?
C 使用以下語(yǔ)法:
?
1 | [dabu@dabu.info ]$ cc -O input.c -o executable |
解釋: -O(大寫的O)表示優(yōu)化代碼,編譯后得到的文件比沒(méi)優(yōu)化的小些,執(zhí)行可能更快
C++使用以下語(yǔ)法:
?
1 | [dabu@dabu.info ]$ g++ -O -Wall input.C -o executable |
如何(怎樣)使用數(shù)學(xué)函數(shù)的C語(yǔ)言程序呢?
要增加 -lm參數(shù)讓gcc與數(shù)學(xué)函數(shù)庫(kù)連接:
?
1 | [dabu@dabu.info ]$ cc myth1.c -o executable -lm |
解釋:-l參數(shù)就是用來(lái)指定程序要鏈接的庫(kù),-l參數(shù)緊接著就是庫(kù)名,比如數(shù)學(xué)庫(kù),他的庫(kù)名是m,他的庫(kù)文件名是libm.so,很容易看出,把庫(kù)文件名的頭lib和尾.so去掉就是庫(kù)名。
如何(怎樣)編譯一個(gè)使用Xlib 圖形函數(shù)的C++程序?
?
1 | [dabu@dabu.info ]$ g++ fireworks.C -o executable -lX11 |
解釋:X11表示Xlib庫(kù)
如何(怎樣)編譯多個(gè)源文件生成可執(zhí)行程序 ?
假設(shè)要同時(shí)編譯light.c, sky.c, fireworks.c 這3個(gè)C語(yǔ)言源文件,輸入:
?
1 | [dabu@dabu.info ]$ cc light.c sky.c fireworks.c -o executable |
C++同時(shí)編譯c.C bc.C file3.C 3個(gè)源代碼文件,輸入:
?
1 | [dabu@dabu.info ]$ g++ ac.C bc .C file3.C -o my-program-name |
看了“在Linux下編譯C或C++程序的教程”還想看: