为什么链接到静态库通常比链接到单个源文件更快?

时间:2017-10-22 14:43:02

标签: linux unix static-libraries

案例1. gcc -o program main.o file1.o file2.o

案例2. ar crv foo.a file1.o file2.o     那么,gcc -o program main.o foo.a

在编译时,链接到静态库(案例2)通常比链接到单个源文件更快。(案例1)

为什么和什么情况?

感谢任何帮助。

/* Filename :lib.h */
void file2(char *);
void file1(int);

的main.c

#include "lib.h"
int main()
{
    file1(3);
    file2("Hello World");
    return 0;
}

file1.c中

#include <stdio.h>
#include "lib.h"
void file1(int arg) {
    printf("you passed %d\n", arg);
} 

file2.c中

#include <stdio.h>
#include "lib.h"
void file2(char* arg) {
    printf("you passed %s\n", arg); 
}

1 个答案:

答案 0 :(得分:0)

我能想到的唯一情况是你的目标文件相当大。

链接库只会“拉入”引用的项目。因此,您的可执行文件可以更小,并且内存中的函数更接近于更短的跳转。但在现代平台上,这是不太可能发生的事情。