zoukankan      html  css  js  c++  java
  • Linux GCC编译

    .a 静态库(打包文件 由多个.o文件打包而成)
    .c 未经过预处理的C源码
    .h C头文件
    .i 经过预处理的C源码(将头文件内容加载到c文件中)
    .o 编译之后产生的目标文件
    .s 生成的汇编语言代码
    .so 动态库(动态链接库)

     // hello.c
     
      #include <stdio.h>
      int  main()
       {
        printf("hello, world!/n");
        return 0;
      }
    

    直接生成可执行程序:gcc hello.c
    文件:a.out

    上述编译过程分为四个阶段进行的: 预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。

    1. 生成预处理后的文件 hello.i

    $ gcc -E hello.c -o hello.i == gcc -E hello.c == gcc -E -o hello.i hello.c

    2. 生成汇编文件 hello.s

     $ gcc  -S  hello.c  -o  hello.s   ==  gcc  -S   hello.i   -o  hello.s == gcc  -S   hello.c    ==  gcc  -S  hello.i   ==  gcc  -S  -o  hello.s  hello.c
    

    3. 生成目标文件 hello.o

     $ gcc  -c   hello.c   -o   hello.o    ==  gcc  -c   hello.c  ==  gcc   -c  hello.i   ==  gcc  -c  hello.s ==  gcc   -c   -o    hello.o   hello.c
    

    4. 生成可执行文件 hello

     $ gcc -o hello   hello.c  ==   gcc   hello.c  == gcc  -o   hello.i ==  gcc  -o   hello.s  ==  gcc -o  hello.o
    

    linux下静态库的生成比较方便。在生成目标文件后用 ar 打包即可。在中大型项目中一个模块一般会做成一个静态库,以方便管理、提高编译、链接效率。
    linux下动态库的生成通过GCC选项实现。

  • 相关阅读:
    Go语言指针
    程序员 需要掌握得600个英语单词
    Go语言管道
    Go语言容器
    Go语言切片
    Go语言类型转换
    Go语言数组
    LR静态存储/动态存储/指针变量脚本说明
    MQ报错2009/2085解决方法
    Windows性能监控监视器(perfmon使用)
  • 原文地址:https://www.cnblogs.com/Nice-Boy/p/6231094.html
Copyright © 2011-2022 走看看