1. 程式人生 > >Linux下使用gcc進行靜態編譯和使用動態連結庫編譯

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

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


int func(int a)
{
    return a+1; 
}

main.c:

#include <stdio.h>

extern int b; 
int func(int a); 

int main()
{
    b = func(1); 

    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