一次简单的makefile应用

本文介绍了在GCC编译过程中涉及的预处理、编译、汇编和链接四个步骤,并通过预处理、编译和链接的命令举例说明。当项目文件数量增多时,使用makefile可以避免繁琐的手动编译命令。在给出的TCP通信项目中,展示了如何编写makefile以生成服务器的可执行文件。最后,提到了使用git进行版本控制的相关操作。
摘要由CSDN通过智能技术生成

        在写makefile文件之前我们先了解一下编译器在生成可执行文件过程中都经历了哪些步骤:

        以gcc编译main.c为例:

        1、预处理器按照预处理指令开始对源代码main.c进行加工,生成预编译文件main.i

                gcc -E main.c

        2、将main.i文件编译成汇编语言文件main.s

                gcc -S main.c -o main.s

        3、将main.s汇编成机器语言,目标文件main.o

                gcc -c main.s

        4、将main.o和运行环境或库文件绑定,生成可执行文件a.out

                gcc main.o

       

        以上四个步骤可以用一条简单且常见的命令完成:

        gcc main.c

        补充一下gcc各参数的含义:

        -E        预处理

        -S        将语言编译成汇编

        -c        将汇编或者c语句翻译成目标文件,即机器语言

        -o        指定输出文件的名字

        各文件后缀的含义:

        .c        源文件

        .i        预处理后的文件

        .s        汇编语言文件

        .o        目标文件

        接下来看下实际项目中makefile文件的编写,该项目为简单的tcp通信项目,目录结构如下:

        

        LServer:服务器

        LClient:客户端

        common:公共的工具函数及类(服务器调用的服务器类和客户端调用的客户端类皆在其中)

        服务器代码如下:

        

        代码中只是简单的创建一个服务器类对象,然后调用成员函数CreateServer来对服务器进行实现。如果不使用makefile直接编译的话需要下面的指令(直接用g++编译器进行操作):

        g++ -c main.cpp                                       (生成main.o文件)

        g++ -c ../common/server/server.cpp        (生成server.o文件)

        g++ -o main main.o server.o                    (生成main可执行文件)

        如果项目内的文件很多的话编译的时候会非常麻烦,这时候就可以使用makefile文件了。同样的生成main可执行文件需要的makefile文件内容如下:

        

        makefile文件写好之后,执行make命令就可以生成想要可执行文件了。需要特别注意的是每条g++命令前必须是tab不能是空格

        最后,提交一下git:

        git add --all .

        git commit -m "create makefile"

        git status

        git push -u origin master

        git log

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古道青阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值