Tag: 靜態庫

  • Linux中如何創建靜態庫和動態庫

    靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫。   動態庫在程序編譯時並不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態庫存在。   程序1: hello.h   #ifndef HELLO_H   #define HELLO_H   void hello(const char *name);   #endif //HELLO_H   程序2: hello.c   #include <stdio.h>   void hello(const char *name)   {   printf(“Hello %s!\n”, name);   }   程序3: main.c   #include “hello.h”   int main()   {   hello(“everyone”);   return 0;   }   無論動態庫還是靜態庫都需要用到.o文件來生成,先編譯生成.o文件。   # gcc -c hello.c   1:創建靜態庫   靜態庫文件名的命名規範是以lib為前綴,緊接著跟靜態庫名,擴展名為.a。例如:我們將創建的靜態庫名為myhello,則靜態庫文件名就是libmyhello.a。   # ar cr libmyhello.a hello.o   使用靜態庫:只需要在妳的源程序中加入包含妳所需要使用到的函數的聲明(即包含頭文件),然後在gcc生成目標文件時候指明靜態庫就OK了(除非妳包含的頭文件在/usr/include,庫文件在標準庫/usr/lib,/lib下,否則妳得顯示指明他們的路徑)   # gcc -o hello…