美文网首页
C语言多文件编译 gcc 与 Cmake

C语言多文件编译 gcc 与 Cmake

作者: 交大小丑 | 来源:发表于2020-07-05 01:56 被阅读0次

关于编译和链接

  • 一般来说,无论是C、C++,首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件,UNIX下是.o文件,即Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。
  • 也就是源文件(.c 文件或者.cpp文件)首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error)。

使用命令编译链接

  • 如果使用命令编译,过程比较麻烦。假如我有三个.h的头文件和四个.c的代码文件。首先将这七个文件放到一个文件夹里(这里只介绍简单应用,所以放在一个文件夹,以后慢慢填坑)如下图。
image
  1. 接下来打开终端,并转到这个文件夹。
  2. 然后在终端输入
gcc -c main.c
gcc -c AAA.c
gcc -c BBB.c
gcc -c CCC.c
  1. 这样就把四个文件编译完成,查看文件会出现四个.o文件(下图)


    image
  2. 接下来链接即可。在终端输入

gcc main.o AAA.o BBB.o CCC.o -o main

就可以生成可执行文件 main

image
  1. 这样执行 ./main即可。
    整个执行过程如下:
image

使用Cmake编译

  • 有人会提出疑问,我们不是用Mingw-w64配置好gcc了吗,不就已经实现C++代码的正常运行了嘛?为什么还要cmake呢?其实不难发现,我们上次配置的gcc仅仅适用于运行单个源文件,但是面对大的项目,就会变得很棘手!

  • 当然,你如果觉得这些配置比较复杂,你可以选择使用Visual Studio或者是更加专业的CLion
    这是一个集成块发环境(IDE),所有的东西都不需要你手动去配置,你只需要把程序写好,点击三角形运行就可以了。
    缺点:
    1.但是这是过于“傻瓜式”的东西,如果想对C或者编译 原理做 进一步的理解的话,还是希望大家 可以自己配置!
    2.Visual Studio、CLion要钱 !
    3.即使说你可以破解,但是Visual Studio的占用空间比较大,一般安装下载完需要3~4GB,会带来一定的卡顿

  • 我们在这里做详细的介绍,以及cmake配置的步骤详解!
    一、cmake VS gcc
    1.什么是gcc?
    gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。
    2.gcc的缺陷
    在上一篇博文中我们用gcc来编译C++,我们会发现每个可执行的.exe都需要单独配置,也就是说:当你的程序只有一个源文件时,直接就可以用gcc命令编译它。
    但是如果你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大
    3.引入make
    make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式——通过调用makefile文件中用户指定的命令来进行编译和链接的。
    4.什么是makefiles?
    一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
    make需要按照makefile中的命令执行!
    makefile命令中就包含了调用许多编译器(如我们这里多用到的gcc编译器)去编译某个源文件的命令。
    人总是“懒惰的”,makefile在一些简单的工程完全可以人工手写,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。因此我们引入了cmake
    5.什么是cmake呢?
    CMake这个名字是cross platform make的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。
    CMake可以更加简单的生成makefile文件给上面的make用。当然CMake还可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。
    6.CMake生成makefile的原理
    cmake生成makefile的原理是根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。当然CMakeLists.txt就需要你自己去手写了!

VS Code下 cmake 配置C++环境(windows )_王璐璐的博客-CSDN博客_vs code怎么配置cmake的环境参数 https://blog.csdn.net/qq_44717317/article/details/103658160?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

相关文章

  • centos安装mysql5.5

    相关准备 gcc、gcc-c++//c语言编译 cmake//mysql编译 ncurses-devel//字符终...

  • C语言多文件编译 gcc 与 Cmake

    关于编译和链接 一般来说,无论是C、C++,首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件...

  • CentOS6.5安装FastDFS

    1.安装gcc(c语言开发,需要使用gcc编译) 命令:yum install make cmake gcc gc...

  • centos编译mysql源码

    源码获取 安装GCC 安装CMake(依赖gcc gcc++) 安装bison 设置编译文件 cmake编译 创建...

  • C语言基础

    终端编译运行c语言 编译: gcc c语言文件 会在当前文件夹下生成一个a.out文件运行: ./a.out 文件...

  • FastDFS安装

    1.安装FastDFS依赖 FastDFS是C语言开发的应用.安装必须使用make,cmake和gcc编译器 # ...

  • centos7.3编译php7.1.9

    0、编译php需要安装依赖 yum install -y make cmake gcc gcc-c++ autoc...

  • 5. centos下安装openscenegraph环境

    配置OpenGL开发环境 安装 gcc 编译器 cmake 安装文件编译工具首先下载cmake 3.6,并解压,检...

  • MDK编译过程及文件类型全解

    C语言编译步骤 1.预处理 gcc -E2.编译 gcc -S3.汇编 gcc -C4....

  • 命令行编译C++/C文件

    编译C文件用GCC 编译C++文件(包括.C/C++文件)用G++ 编译C++文件常用方法: 单个文件: g++ ...

网友评论

      本文标题:C语言多文件编译 gcc 与 Cmake

      本文链接:https://www.haomeiwen.com/subject/mhwuqktx.html