zoukankan      html  css  js  c++  java
  • 编译(- c)某个源文件生成目标文件只需要路径有调用函数的头文件,链接(- o)成可执行文件需要加上实现函数的目标文件

    特别说明:如果没有指定链接文件,gcc XXX.o -o AAA(包含链接过程,链接器也是用 ld )链接阶段就会使用gcc默认链接文件

    gcc -c XXX.c:-c表示只编译不链接,此指令生成 XXX.o 目标文件

    gcc main.o hello.o factorial.o -o XXX:链接成可执行文件 XXX

    总结:编译只关心路径下是否存在 " 调用函数对应的头文件 ",链接需要把 “ 函数实现对应的目标文件 " 作为参数

    main.cpp 文件的内容

    #include<stdio.h>
    
    #include "functions.h"
    
    int main()
    {
        print_hello();
        printf("
    ");
    
        printf("The factorial of 5 is %d
    ", factorial(5));
    
        return 0;    
    }

    hello.cpp 文件的内容

    #include <stdio.h>
    
    void print_hello(){
    
        printf("hello world");
    
    }

    factorial.cpp 文件的内容

    #include <stdio.h>
    
    int factorial(int n){
    
        if(n != 1){
    
            return (n*factorial(n-1));
        }else{
    
            return 1;
        }
    }

    functions.h 内容

    void print_hello();
    int factorial(int n);
    main.c调用了函数 printf_hello(),所以编译main.c生成目标文件,需要路径下有functioins.h,不需要函数的源文件
    main.o: main.cpp functions.h
        gcc -c main.cpp
    factorial.o: factorial.cpp functions.h
        gcc -c factorial.cpp
    
    hello.o: hello.cpp functions.h
        gcc -c hello.cpp

     最后执行:

    hello: main.o factorial.o hello.o
        gcc main.o factorial.o hello.o -o hello
  • 相关阅读:
    任意用户密码重置的10种姿势
    提取header头进行模块化处理
    web安全测试--XSS(跨站脚本)与CSRF
    web测试--登录界面怎么测?
    Burp Suite抓https数据包
    CTFHub_技能树_远程代码执行
    CTFHub_技能树_SQL注入Ⅱ
    XSS 跨站脚本
    C语言中的内存对齐问题
    CTFHub_技能树_SQL注入Ⅰ
  • 原文地址:https://www.cnblogs.com/god-of-death/p/14675924.html
Copyright © 2011-2022 走看看