2016-10-12 48 views
0

這兩個等價或不同(在某種意義上)?鏈接和包含頭文件的區別

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 

但這個編譯使用FOLL由於聲明

$gcc myfile2.c -lm 

回答

0

只是寫了一個程序來測試這一點:

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

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

兩個命令產生8432個字節的文件,這是我的機器上是相同的。

所以我想在這兩種情況下,libm是動態鏈接,我猜庫將靜態鏈接如果只有一個歸檔文件(.a)中被發現,而不是典型的(的.so)共享庫