链接和包含头文件之间的区别

时间:2016-10-12 15:16:13

标签: gcc dynamic-linking

这两个是等价还是不同(在什么意义上)?

myfile1.c

    #include <stdio.h>
    #include <math.h>

    //some code here which uses math library

并使用gcc

正常编译
$gcc myfile1.c

myfile2.c

    #include <stdio.h>

    //some code here which uses math library

但是使用以下语句编译它

$gcc myfile2.c -lm

1 个答案:

答案 0 :(得分:0)

刚写了一个程序来测试这个:

#include <stdio.h>
#include <math.h>

void main() {
    double f = 0.5;
    printf("%f", sqrt(f));
}

这两个命令产生8432个字节文件,这些文件在我的机器上是相同的。

所以我想在这两种情况下,libm是动态链接的,我想如果只找到一个存档文件( .a)而不是典型的( .so)共享库