【发布时间】:2017-10-22 14:43:01
【问题描述】:
案例1.gcc -o 程序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);
}
【问题讨论】:
-
main.o中的函数引用了file1.o和file2.o中的哪些函数?
-
@MarkPlotnick 我添加了源代码
-
请定义“更快” 你的意思是运行时执行更快吗?还是“程序”的构建更快?
-
您实际测量过差异吗?还是这只是一个假设?
-
@Rich 在我的大学考试中,它有以下问题。 如果不创建静态库 foo.a 就直接运行 gcc -o program main.o file1.o file2.o,编译速度可能会变慢。在某些情况下解释一下。
标签: linux unix static-libraries