天天看點

Linux下動态庫的生成及連結方法(1)

               Linux下動态庫的生成及連結方法 (1)

      Linux 下動态庫檔案的擴充名為".so"(Shared Object)。按照約定,所有動态庫檔案名的形式是libname.so(可能在名字中加入版本号)。這樣,線程函數庫被稱作 libthread.so。靜态庫的檔案名形式是libname.a。共享archive的檔案名形式是libname.sa。共享archive隻是一種過渡形式,幫助人們從靜态庫轉變到動态庫。 本文僅以簡單的例子介紹動态庫檔案的生成和連結方法。作業系統:VM_Red Hat Linux; GCC版本:3.2.2-5.

一、庫檔案及測試檔案代碼 庫檔案及測試檔案所在的目錄:/home/myself/libtest/。

  1.庫檔案名:mylib.c

  #include <stdio.h>

  int my_lib_test (void)

  {

    printf ("/n==lib test!/n");

    return 0;

  }

 2.測試檔案名:test.c

 #include <stdio.h>

 int main(void)

 {

   my_lib_test();

   return 0;

 }

二、動态庫的編譯方法

 編譯庫檔案mylib.c:

 $gcc -shared -o mylib.so mylib.c

如果編譯成功,會在目前目錄下生成動态庫檔案:mylib.so。

其中,編譯生成動态庫的指令為:gcc (-fpic) -shared -o mylib.so mylib.c -fpic 使輸出的對象子產品是按照可重定位位址方式生成的。 -shared指定把對應的源檔案生成對應的動态連結庫檔案。

三、動态庫的測試方法

 編譯測試檔案test.c:

 $ gcc -o test test.c ./mylib.so

成功編譯後,生成test檔案,運作test: $ ./test

  ==lib test!

其中,gcc -o test test.c ./mylib.so的最後一個參數指定所連結庫檔案的相對路徑。(相對路徑和絕對路徑應該知道吧?)

Linux下動态庫的生成及連結方法 (2)

繼續閱讀