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

 更新时间:2021年04月11日 10:29:10   投稿:goldensun  
这篇文章主要介绍了在Linux下编译C或C++程序的教程,是C/C++入门学习中的必备知识,需要的朋友可以参考下

从开始学习C/C++我们都在是windows下,那么如何(怎样)在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++ 编译器:

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

如果你是使用 Debian , Ubuntu Linux ,则输入apt-get命令来安装装GNU c/c++ 编译器;

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

第二步:确认是否安装成功

输入以下命令,显示编译器版本和安装的文件夹:

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

输出如下图:

201573111516565.jpg (598×257)

如何(怎样)在linux中编译C/C++代码

创建一个demo.c文件,使用vi ,emacs 或者 joe 将下列c源代码输入进去:

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

接着进行编译:

编译的使用语法如下:

[dabu@dabu.info ]$  gcc program-source-code.c -o executable-file-name

或者

[dabu@dabu.info ]$    cc program-source-code.c -o executable-file-name

解释:program-source-code.c是C源代码,executable-file-name是编译后得到的可执行文件

又或者

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

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

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

或者

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

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

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

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

输入以下命令:

[dabu@dabu.info ]$    ./demo

或者

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

会话过程如下图:

201573112302266.gif (567×339)

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

创建一个文件名为demo2 ,将下面的代码保存到该文件中;

  #include "iostream"
  // demo2.C - Sample C++ prgoram
  int main(void)
  {
  std::cout << "Hello! This is a C++ program.\n";
  return 0;
  }

编译demo2.c ,输入:

[dabu@dabu.info ]$    g++ demo2.C -o demo2

或者

[dabu@dabu.info ]$   make demo2

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

[dabu@dabu.info ]$   ./demo2

如何(怎样)生成为GDB调试信息和警告信息?

C 使用以下语法;

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

解释:-Wall表示生成所有警告信息。-g表示生成调试信息

C++使用以下语法:

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

如何(怎样)在linux上得到优化代码?

C 使用以下语法:

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

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

C++使用以下语法:

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

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

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

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

解释:-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,比如数学库,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名。
如何(怎样)编译一个使用Xlib 图形函数的C++程序?

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

解释:X11表示Xlib库
如何(怎样)编译多个源文件生成可执行程序 ?

假设要同时编译light.c, sky.c, fireworks.c 这3个C语言源文件,输入:

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

C++同时编译c.C bc.C file3.C 3个源代码文件,输入:

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

相关文章

  • C++变量初始化形式及其默认初始值问题

    C++变量初始化形式及其默认初始值问题

    这篇文章主要介绍了C++变量初始化形式及其默认初始值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • C语言最大公约数示例教程

    C语言最大公约数示例教程

    这篇文章主要为大家介绍了C语言最大公约数的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • C++实现LeetCode(61.旋转链表)

    C++实现LeetCode(61.旋转链表)

    这篇文章主要介绍了C++实现LeetCode(61.旋转链表),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言三个函数的模拟实现详解

    C语言三个函数的模拟实现详解

    这篇文章主要为大家详细介绍了C语言三个函数的模拟实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C/C++中memset,memcpy的使用及fill对数组的操作

    C/C++中memset,memcpy的使用及fill对数组的操作

    这篇文章主要介绍了C/C++中memset,memcpy的使用及fill对数组的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • EasyC++模板显式具体化

    EasyC++模板显式具体化

    这篇文章主要介绍了C++模板显式具体化,在C++中,可以提供一个具体化函数定义称为具体显式化(explict specialization)。其中包含所需的代码,当编译器找到与函数调用匹配的具体化定义时,将使用该定义,而不再寻找模板,下面我们来看看文章具体介绍吧
    2021-12-12
  • Qt使用windeployqt工具实现程序打包发布方法

    Qt使用windeployqt工具实现程序打包发布方法

    本文主要介绍了Qt使用windeployqt工具实现程序打包发布方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • sqlserver,sqlite,access数据库链接字符串整理

    sqlserver,sqlite,access数据库链接字符串整理

    本节主要整理sqlserver,sqlite,access数据库链接字符串,有需要的朋友可以参考下
    2014-07-07
  • Linux下C语言实现贪吃蛇小游戏

    Linux下C语言实现贪吃蛇小游戏

    这篇文章主要为大家详细介绍了Linux下C语言实现贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • C语言数据结构链表队列的实现

    C语言数据结构链表队列的实现

    这篇文章主要介绍了C语言数据结构链表队列的实现的相关资料,需要的朋友可以参考下
    2017-07-07

最新评论