zoukankan      html  css  js  c++  java
  • Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)

    一、确认已经装好了GCC和Make的软件包

    可以使用whereis命令查看:

    如果whereis  gcc和whereis  make命令有结果,说明安装了这两个软件,可以继续往下做。

    二、使用GCC编译运行一个HelloWorld程序(只涉及单个文件)

    可以在任何一个目录编写C程序然后编译运行,我这个实例在自己主目录进行:

    然后就进入了编写程序的界面:

    按下键盘”i”进入编辑界面,然后输入程序:

    按ESC(进入命令行模式),然后输入”:wq”,冒号表示开始输入命令,字母w代表保存文件,字母q代表退出编辑器:

    按回车退出vim编辑器,退回到终端,以下是之后的编译运行截图:

    三、使用GCC编译运行一个多文件程序(包含主程序和子程序)

    这里我们要写两个C程序文件,一个文件里面写个被调函数,另外一个文件中main函数调用第一个文件的函数,如下所示:

    ex_display.c的代码如下,同样的写完后ESC然后输入:wq退出:

    输入如下的main函数代码:

    然后保存退出,如下是编译运行过程:

    四、使用Makefile解决多文件编译运行的问题

    正如上节的红框框里面所叙述,如果一个程序涉及的文件很多的话,每个都得写出来,很是麻烦,所以Makefile就出现了,请看教程:

    进入makefile的编辑界面后,输入如下内容:

    然后保存退出,运行make命令:

    五、Makefile和shell script方法的对比

    有人说,我把之前的所有命令,全写到shell script里面,不就达到Makefile的效果了,没错确实最终效果是相同的,但是Makefile却有这些好处:

    • 简化编译执行的命令(并没有gcc –c的过程)
    • 一次make后,下次只会编译改动的文件,其它的文件不会再编译了

    其它还有一些优点,不过这第二个优点,对于大型项目来说,好处太大了!

  • 相关阅读:
    CF633C Spy Syndrome 2 trie树
    luogu 3998 [SHOI2013]发微博 map
    阿里云ECS新增端口
    阿里云运行docker容器报错
    no matches for kind "ReplicaSet" in version "extensions/v1beta1"
    k8s中flannel:镜像下载不了
    k8s删除节点后再重新添加进去(踩坑)
    如何在IntelliJ Idea中同时启动不同端口
    SpringBoot整合Elastic-job(详细)
    K8S容器探针
  • 原文地址:https://www.cnblogs.com/nowornever-L/p/6755804.html
Copyright © 2011-2022 走看看