天天看點

Linux下使用gcc進行靜态編譯和使用動态連結庫編譯

/home/plus/demo下有main.c和func.c兩個檔案:

func.c:

int func(int a)
{
    return a; 
}
           

main.c:

#include <stdio.h>

extern int b; 
int func(int a); 

int main()
{
    b = func(); 

    printf("%d\n", b); 
}
           

1.靜态編譯

法1:gcc main.c func.c生成的可執行檔案是目前路徑下的a.out,執行./a.out即可得到程式運作結果;

法2:gcc main.c func.c -o main ,執行./main即可;

2.使用動态連結庫

将這個func.c編譯成獨立的與具體的連接配接位址無關的.o目标檔案:

gcc -fPIC -c func.c -o func.o

然後 再開始建立動态連結庫檔案:

gcc -shared func.o -o libfunc.so

将庫檔案的目錄添加到環境變量中:

export LD_LIBRARY_PATH=/home/plus/demo/

給main.c指定使用的庫進行編譯:

gcc main.c -o main libfunc.so

執行:

./main

繼續閱讀