在CentOS上使用GCC生成動態庫(共享庫)的步驟如下:
.c
文件。例如,創建一個名為hello.c
的文件,內容如下:#include <stdio.h>
void hello() {
printf("Hello from the shared library!\n");
}
.o
文件可以用于創建動態庫。在終端中運行以下命令:gcc -c -fPIC hello.c -o hello.o
這里,-c
選項表示只編譯不鏈接,-fPIC
選項表示生成位置無關代碼。
gcc
將.o
文件鏈接為動態庫。在終端中運行以下命令:gcc -shared -o libhello.so hello.o
這里,-shared
選項表示生成共享庫,-o
選項指定輸出文件名,libhello.so
是動態庫的默認命名格式(以lib
開頭,以.so
結尾)。
現在,你應該在當前目錄下看到一個名為libhello.so
的動態庫文件。你可以使用ldd
命令查看動態庫的依賴關系:
ldd libhello.so
要在程序中使用這個動態庫,需要在編譯時指定庫的路徑和名稱。例如,創建一個名為main.c
的文件,內容如下:
#include <stdio.h>
void hello(); // 聲明動態庫中的函數
int main() {
hello();
return 0;
}
使用以下命令編譯main.c
并鏈接到動態庫:
gcc main.c -L. -lhello -o main
這里,-L.
選項表示在當前目錄下查找庫文件,-lhello
選項表示鏈接名為libhello.so
的庫。
運行生成的可執行文件:
./main
輸出應為:
Hello from the shared library!