zoukankan      html  css  js  c++  java
  • Linux之C编译器gcc和makefile使用简介

    使用gcc编译程序是,其过程主要分为四个阶段:预处理,编译,汇编,连接

    程序清单:

    1 #include<stdio.h>
    2 #include<stdlib.h>
    3 int main(int argc,char** argv)
    4 {
    5   printf("Hello Linux ,i am coming---------------
    ");
    6   return 0;    
    7 }
    View Code

    1.预处理(cpp):生成 *.i 的预处理文件,该过程只激活预处理,不生成文件,所以需要重定向一个输出文件

    使用指令 -E,如gcc -E main.c -o main.i  或

            cpp main.c -o main.i

    2.编译(ccl):生成 *.s 文件,该过程只激活预处理和编译, 关联文件可以是*.i  或 *.c 

    使用指令 -S ,如 gcc -S main.c -o main.s 或

             gcc -S main.i -o main.s 或

             ccl -S main.c -o main.s

    3.汇编(as):生成 *.o 文件,该指令只激活预处理、编译和汇编, 关联文件可以是 *.c 、*.i 、*.s 三者之一 

    使用指令 -O ,如 gcc -c main.c -o main.o 或

             gcc -c main.i -o main.o 或

             gcc -c main.s -o main.o 或

             as main.c -o main.o

    4.连接(ld):生成可执行文件,相关联文件可以是 *.c 、*.i 、*.s 、*.o之一

    gcc main.c -o main 或 

    gcc main.i -o main 或 

    gcc main.s -o main 或 

    gcc main.o -o main 或

    ld main.c -o main

    当一个项目中包含两个或两个以上的C文件时,这种编译方法就显得力不从心了,这时就要用到makefile了

    为了结合上面的gcc指令,我写了如下的makefile文件

    1 main:main.o
    2     gcc main.o -o main
    3 main.o:main.s
    4     gcc -c main.s -o main.o
    5 main.s:main.i
    6     gcc -S main.i -o main.s
    7 main.i:main.c
    8      gcc -E main.c -o main.i
    View Code
    whatever is worth doing is worth doing well...
  • 相关阅读:
    一周的前端面试
    PHP导出超大的CSV格式的Excel表方案
    Java HashMap Demo
    Vmware 设置桥接模式
    Vue 模板
    SpringMVC 拦截器
    IntelliJ IDEA 修改缓存文件设置
    Maven 命令操作项目
    Maven 介绍
    Spring Boot 5 SpringSecurity身份验证
  • 原文地址:https://www.cnblogs.com/Waming-zhen/p/3148824.html
Copyright © 2011-2022 走看看