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

  • 相关阅读:
    HDU 3833 YY's new problem ()
    从文件读入16进制数转化为10进制数再输出到文件中
    UESTC 1215 (思维题 旋转)
    HDU2067卡特兰数
    HDU2050离散数学折线分割平面
    cshell学习
    C++学习1
    QT学习1
    QT Creator常用快捷键
    Ubuntu14.04安装QT5.5
  • 原文地址:https://www.cnblogs.com/Nice-Boy/p/6231094.html
Copyright © 2011-2022 走看看