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选项实现。

  • 相关阅读:
    HTML学习心得
    VS相关
    安全算法
    第三方库的编译
    C++编译问题
    GCC编译
    linux系统·用户管理
    批处理遍历并计算子文件夹下的文件数目
    [Tianchi] Repeat Buyers Prediction-Challenge the Baseline -- version 0
    win10安装cuda
  • 原文地址:https://www.cnblogs.com/Nice-Boy/p/6231094.html
Copyright © 2011-2022 走看看