<4>Linux-文件操作命令(3)

4.1  vi环境定制

  • set nu:添加行号显示
  • set nonu:取消行号显示
  • set autoindent:自动缩进
  • set noautoindent:取消自动缩进

gcc编译工具

  • -o:  指定目标文件的名称
  • -g:使生成的可执行程序中包含debug信息
  •  -c:只编译不链接
  •  -E:只做预处理
  •  -S:由C翻译成汇编

 

4.2  gcc  helloworld.c ---> a.out  过程

         1) 预编译 -E

            处理所有的伪指令(以#开头),它会把头文件的内容展开到当前  文件中来。

              gcc helloworld.c -E -o helloworld.i   

2)编译 -S

      由C翻译成汇编语言

      gcc helloworld.i -S   ---->helloworld.s

3)汇编  -c

      由汇编语言翻译成目标代码

      gcc helloworld.s -c   ---->xxx.o     [od  xxx.o]可查看二进制文件

4)链接

       由多个目标代码文件生成可执行文件

      gcc helloworld.o      ----->a.out

 

     在实际开发中,为了使代码结构更合理,更方便运行代码的重用,通常采用将主函数和其他函数放在不同文件中的方法。

     除主程序外,每个函数都有函数声明(函数头)和函数实现(函数体)两部分组成。

        函数的声明一般放在头文件.h中,而函数的定义文件放在实现文件中.c。[头文件中还可以放宏、自定义类型,类型别名,头文件]

              

 4.3 使用gcc编译多个源文件

进一步理解头文件

#include <....>:系统路径找

       /usr/lib/gcc/i686-linux-gnu/4.6/include

         /usr/local/include

         /usr/include/i386-linux-gnu/

         /usr/include/

问题一:如果.c和.h不在同一个目录下,如何处理?

             1.c文件中

          #include "相对路径/xxx.h"

        2 .c文件中

          #include “xxx.h”

          gcc -I相对路径 

        3  xxx.h扔到系统路径下去(不推荐)

问题二:什么情况下会出现头文件的重复包含?
        A :  #include<a.h>
            #include<a.h>

        B:  #include<a.h>
            #include<b.h>
         如果a.h和b.h中又同时包含了相同的一个头文件就会出现重复包含。

 

posted @ 2021-06-17 17:28  他乡一故知  阅读(60)  评论(0编辑  收藏  举报