美文网首页
Compiling, Linking and Building

Compiling, Linking and Building

作者: V_coa | 来源:发表于2017-08-20 15:43 被阅读11次

    首先写一段 C 代码,如下:

    
    #include <stdio.h>
    
    int main() {
        printf("Hello, world\n");
        return 0;
    }
    
    

    编译代码

    gcc hello.c

    默认生成一个 a.out 的文件, 然后执行 ./a.out, 就打印出 Hello,world

    如果想要特殊的输入文件可以先执行:

    gcc -o hello hello.c

    分开编译和链接的操作

    
    -c 只进行编译
    
    gcc -c -g hello.c
    
    -o 进行链接操作,生成可执行文件
    
    gcc -g -o hello hello.o
    
    

    多文件的编译和链接

    gcc -o target file1.c file2.c

    通常会编译每个源文件,最后把它们链接成一个可执行文件

    gcc -c file1.c
    gcc -c file2.c
    gcc -o target file1.o file2.o
    
    
    gcc.png

    GCC 编译器 生成可执行文件 有 4 个步骤如上图,例如 gcc -o hello hello.c,包含下面几个步骤

    1.预处理,通过预处理器,把头文件 includes 进来 headers 和 展开宏(#define)

    gcc hello.c > hello.i

    结果生成中间文件 hello.i 包含了展开的代码

    2.把上面生成的中间代码生成汇编代码

    gcc -S hello.i

    -S 把中间代码生成目标文件 hello.i

    3.汇编器把汇编代码转换成机器代码生成 hello.o 文件

    as -o hello.o hello.s

    4.最后就链接代码,生成可执行文件

    ld -o hello hello.o

    Make

    相关文章

      网友评论

          本文标题:Compiling, Linking and Building

          本文链接:https://www.haomeiwen.com/subject/pnpfdxtx.html