Gcc与Make编译C/C++学习

      在linux环境下 编译C/C++文件需要使用gcc或者make的编译软件进行编译

      编译有三个过程:预编译---->编译----->链接    预编译的过程就是将c/c++文件的头文件包含到代码的过程  编译就是将文件变成机器代码  链接就是将代码中使用的各个函数库的机器代码进行链接变成可执行文件

     1:首先学习预编译 gcc -o out.c -E src.c

     这是hello.c的源文件内容

     

   如:gcc -o shao.c -E hello.c

  

可以看一下预编译后生成的文件内容


内容就是将stdio.h 和 stdlib.h文件拷贝到shao.c中


预编译结束后就要进行编译文件:gcc -o out.o -c src.c

如gcc -o hello.o -c hello.c  就会生成hello.c的机器代码 真是顺序是:生成汇编语言 然后生成机器代码 这里就省略生成汇编语言的过程


机器代码生成后通过链接命令生成可执行文件 gcc -o out src.o....

如gcc -o hello hello.o


执行编译完成后的可执行文件./hello


            到这里 一个c文件就被我们用gcc成功编译成功啦~~到这只是体验了预编译和编译的过程,那么为很么需要链接的过程才能生成可执行文件,链接就是将源代码中用到其他库函数的代码链接到编译生成的机器代码:

            如更改hello.c代码,使用到另一个add.c中的add(int a,int b)的方法,如果不把add.c编译成add.o文件,直接使用gcc -o hello hello.c生成的可执行文件会报错,因为add()方法的机器代码没有链接进来,所以第三部需要gcc -o hello hello.o add.o链接完成后生成的hello可执行文件才能执行:

          如图:

        

     使用的add()方法是add.c中的代码,需要执行gcc -o hello.o -c hello.c 和 gcc -o add.o -c  add.c 生成add.o 和 hello.o的机器代码

     

     然后使用第三个步骤gcc -o hello add.o hello.o 进行链接生成可执行文件hello才能运行 

     

    如果不进行add.o直接编译gcc -o hello hello.o 的话可执行文件不能运行

    

  



     二: 到这基本的预编译-->编译-->链接的过程都熟悉了  下面学习make编译的使用

        在真实项目中不使用gcc进行编译 文件太多不够方便,可以把make理解为批处理编译,我要将项目中的.c文件与.o文件关联然后生成可执行文件,完整的makefile文件内容如下:

      

     执行make命令会自动执行当前目录下的makefile文件:效果如图

     

    这样编译项目的话会很快。如果对makefile文件内容不太理解的话,由于时间问题还是去看看makefile编译的语法规范

    OK  Just Like ! Just Do IT!


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LSP(Language Server Protocol)的C/C++程序编辑与编译服务需要以下几个关键组件: 1. 编辑器/客户端:这可以是任何支持LSP的编辑器或IDE,例如Visual Studio Code、Sublime Text、Vim等。编辑器通过LSP与服务端进行通信,发送请求并接收响应。 2. 语言服务器:语言服务器是一个独立的进程,负责处理客户端发送的请求并返回响应。对于C/C++语言,可以使用clangd作为语言服务器。clangd提供了代码补全、跳转到定义、重构等功能,以及代码的静态分析和编译。 3. 编译器/工具链:C/C++语言需要一个编译器来将源代码编译为可执行文件。在服务端中,你需要安装适当的C/C++编译器(例如GCC、Clang)和相关的工具链。 4. 代码分析工具:为了提供更多的代码分析和智能提示功能,你可能需要使用其他代码分析工具,如Clang-Tidy、Cppcheck等。这些工具可以帮助检查代码中的潜在问题或错误,并提供建议。 5. 构建系统:服务端需要一个构建系统来编译和构建C/C++项目。常见的构建系统包括Make、CMake等。你需要确保你的构建系统配置正确,并能与语言服务器配合使用。 6. 服务器端代码:这是一个运行在服务器上的代码,负责与客户端进行通信,并提供C/C++编辑和编译服务。服务器端代码需要实现LSP协议,处理客户端的请求并返回响应。 通过以上组件的组合,你可以搭建一个基于LSP的C/C++程序编辑与编译服务,提供代码补全、导航、重构等功能,以及对代码的静态分析和编译支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值