學習啦 > 學習電腦 > 操作系統(tǒng) > Linux教程 > 在Linux下編譯C或C++程序的教程

在Linux下編譯C或C++程序的教程

時間: 志藝942 分享

在Linux下編譯C或C++程序的教程

  從開始學習C/C++我們都在是windows下,那么如何(怎樣)在linux中編譯C/C++代碼?在linux終端下(命令行中)編譯譯C/C++代碼?接下來是小編為大家收集的在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++ 編譯器和相關工具包

  如果你是使用Fedora, Red Hat, CentOS, or Scientific Linux,可以使用yum命令快速安裝GNU c/c++ 編譯器:

  ?

1
[root@dabu.info ]# yum groupinstall 'Development Tools'

  如果你是使用 Debian , Ubuntu Linux ,則輸入apt-get命令來安裝裝GNU c/c++ 編譯器;

  ?

1
2
[dabu@dabu.info ]$ sudo apt-get update
[dabu@dabu.info ]$ sudo apt-get install build-essential manpages-dev

  第二步:確認是否安裝成功

  輸入以下命令,顯示編譯器版本和安裝的文件夾:

  ?

1
2
3
[dabu@dabu.info ]$ whereis gcc
[dabu@dabu.info ]$ which gcc
[dabu@dabu.info ]$ gcc --version

  輸出如下圖:

在Linux下編譯C或C++程序的教程

  如何(怎樣)在linux中編譯C/C++代碼

  創(chuàng)建一個demo.c文件,使用vi ,emacs 或者 joe 將下列c源代碼輸入進去:

  ?

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;
}

  接著進行編譯:

  編譯的使用語法如下:

  ?

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 #假設executable-file-name.c 這個文件存在 ##

  下面以demo.c舉例來將demo.c編譯成可執(zhí)行文件:

  輸入:

  ?

1
[dabu@dabu.info ]$ cc demo.c -o demo

  或者

  ?

1
[dabu@dabu.info ]$ make demo #假設demo.c在當前文件夾下存在

  如果你的C/C++源代碼沒有錯誤,編譯器就會編譯成功同時在當前目錄下創(chuàng)建一個叫做demo的可執(zhí)行文件。否則,源代碼有錯誤,你需要修正后重新編譯。輸入下面的命令來確認生成了可執(zhí)行文件:

  ?

1
[dabu@dabu.info ]$ ls -l demo*

  如何(怎樣)在linux上運行或者執(zhí)行這個叫做demo的可執(zhí)行文件

  輸入以下命令:

  ?

1
[dabu@dabu.info ]$ ./demo

  或者

  ?

1
[dabu@dabu.info ]$ /path/to/demo #即demo文件的絕對路徑

  會話過程如下圖:

在Linux下編譯C或C++程序的教程

  編譯和運行一個簡單的C++程序

  創(chuàng)建一個文件名為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

  運行得到的可執(zhí)行文件,輸入:

  ?

1
[dabu@dabu.info ]$ ./demo2

  如何(怎樣)生成為GDB調試信息和警告信息?

  C 使用以下語法;

  ?

1
[dabu@dabu.info ]$ cc -g -Wall input.c -o executable

  解釋:-Wall表示生成所有警告信息。-g表示生成調試信息

  C++使用以下語法:

  ?

1
[dabu@dabu.info ]$ g++ -g -Wall input.C -o executable

  如何(怎樣)在linux上得到優(yōu)化代碼?

  C 使用以下語法:

  ?

1
[dabu@dabu.info ]$ cc -O input.c -o executable

  解釋: -O(大寫的O)表示優(yōu)化代碼,編譯后得到的文件比沒優(yōu)化的小些,執(zhí)行可能更快

  C++使用以下語法:

  ?

1
[dabu@dabu.info ]$ g++ -O -Wall input.C -o executable

  如何(怎樣)使用數(shù)學函數(shù)的C語言程序呢?

  要增加 -lm參數(shù)讓gcc與數(shù)學函數(shù)庫連接:

  ?

1
[dabu@dabu.info ]$ cc myth1.c -o executable -lm

  解釋:-l參數(shù)就是用來指定程序要鏈接的庫,-l參數(shù)緊接著就是庫名,比如數(shù)學庫,他的庫名是m,他的庫文件名是libm.so,很容易看出,把庫文件名的頭lib和尾.so去掉就是庫名。

  如何(怎樣)編譯一個使用Xlib 圖形函數(shù)的C++程序?

  ?

1
[dabu@dabu.info ]$ g++ fireworks.C -o executable -lX11

  解釋:X11表示Xlib庫

  如何(怎樣)編譯多個源文件生成可執(zhí)行程序 ?

  假設要同時編譯light.c, sky.c, fireworks.c 這3個C語言源文件,輸入:

  ?

1
[dabu@dabu.info ]$ cc light.c sky.c fireworks.c -o executable

  C++同時編譯c.C bc.C file3.C 3個源代碼文件,輸入:

  ?

1
[dabu@dabu.info ]$ g++ ac.C bc.C file3.C -o my-program-name


看了“在Linux下編譯C或C++程序的教程”還想看:

1.Linux軟件如何安裝及管理

2.Linux GCC常用命令詳解

3.Linux環(huán)境下使用gdb反匯編C語言程序

4.Linux C語言文件IO教學視頻

5.Linux下C語言編程基礎知識

2837425