学习啦>学习电脑>操作系统>Linux教程>

在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++代码

  创建一个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是编译后得到的可执行文件

  又或者

  ?

1
[dabu@dabu.info ]$ make executable-file-name #假设executable-file-name.c 这个文件存在 ##

  下面以demo.c举例来将demo.c编译成可执行文件:

  输入:

  ?

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

  或者

  ?

1
[dabu@dabu.info ]$ make demo #假设demo.c在当前文件夹下存在

  如果你的C/C++源代码没有错误,编译器就会编译成功同时在当前目录下创建一个叫做demo的可执行文件。否则,源代码有错误,你需要修正后重新编译。输入下面的命令来确认生成了可执行文件:

  ?

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

  如何(怎样)在linux上运行或者执行这个叫做demo的可执行文件

  输入以下命令:

  ?

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

  或者

  ?

1
[dabu@dabu.info ]$ /path/to/demo #即demo文件的绝对路径

  会话过程如下图:

在Linux下编译C或C++程序的教程

  编译和运行一个简单的C++程序

  创建一个文件名为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

  运行得到的可执行文件,输入:

  ?

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上得到优化代码?

  C 使用以下语法:

  ?

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

  解释: -O(大写的O)表示优化代码,编译后得到的文件比没优化的小些,执行可能更快

  C++使用以下语法:

  ?

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

  如何(怎样)使用数学函数的C语言程序呢?

  要增加 -lm参数让gcc与数学函数库连接:

  ?

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

  解释:-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,比如数学库,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名。

  如何(怎样)编译一个使用Xlib 图形函数的C++程序?

  ?

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

  解释:X11表示Xlib库

  如何(怎样)编译多个源文件生成可执行程序 ?

  假设要同时编译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环境下使用gdb反汇编C语言程序

4.Linux C语言文件IO教学视频

5.Linux下C语言编程基础知识

    2837425