在CentOS系統上,使用GCC編譯動態鏈接庫(也稱為共享庫)的方法如下:
hello.c
的C源文件,內容如下:#include <stdio.h>
void hello() {
printf("Hello, World!\n");
}
.o
文件)。在這個階段,我們不指定動態鏈接庫的標志,只是將源代碼編譯為目標文件。例如:gcc -c hello.c -o hello.o
gcc
命令將目標文件鏈接為動態鏈接庫(.so
文件)。在這個階段,我們需要指定-fPIC
選項以生成位置無關代碼,以及-shared
選項來創建共享庫。例如:gcc -fPIC -o libhello.so hello.o
這將在當前目錄下創建一個名為libhello.so
的動態鏈接庫。
main.c
的C源文件,內容如下:#include <stdio.h>
void hello(); // 聲明hello函數
int main() {
hello();
return 0;
}
然后,使用以下命令編譯main.c
文件,并鏈接到libhello.so
動態鏈接庫:
gcc main.c -L. -lhello -o main
這里,-L.
表示在當前目錄下查找庫文件,-lhello
表示鏈接到libhello.so
庫(去掉lib
前綴和.so
后綴)。
LD_LIBRARY_PATH
環境變量,以便系統能夠找到動態鏈接庫。例如:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
然后,運行編譯后的程序:
./main
輸出結果應為:
Hello, World!
這就是在CentOS系統上使用GCC編譯動態鏈接庫的方法。