在CentOS系統中,使用gcc編譯動態庫(共享庫)的步驟如下:
首先,你需要編寫源代碼文件。假設你有兩個源文件 libexample.c
和 example.h
。
libexample.c
#include "example.h"
#include <stdio.h>
void hello() {
printf("Hello from libexample!\n");
}
example.h
#ifndef EXAMPLE_H
#define EXAMPLE_H
void hello();
#endif
使用 gcc
編譯源文件生成目標文件(.o
文件)。
gcc -c libexample.c -o libexample.o
使用 gcc
將目標文件鏈接成動態庫(.so
文件)。
gcc -shared -o libexample.so libexample.o
為了讓系統能夠找到你的動態庫,你需要設置庫路徑。你可以將庫路徑添加到 LD_LIBRARY_PATH
環境變量中,或者將庫文件復制到系統的標準庫路徑中(如 /usr/lib
或 /usr/local/lib
)。
LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH
你可以將這行命令添加到你的 ~/.bashrc
或 ~/.bash_profile
文件中,以便每次登錄時自動設置。
sudo cp libexample.so /usr/lib/
或者
sudo cp libexample.so /usr/local/lib/
現在你可以在你的程序中使用這個動態庫了。假設你有一個使用該庫的程序 main.c
。
main.c
#include "example.h"
int main() {
hello();
return 0;
}
編譯并運行這個程序:
gcc -o main main.c -L/path/to/your/library -lexample
./main
注意:-L
選項用于指定庫的路徑,-l
選項用于指定庫的名稱(去掉 lib
前綴和 .so
后綴)。
如果你不再需要動態庫,可以刪除生成的目標文件和動態庫文件。
rm libexample.o libexample.so
通過以上步驟,你就可以在CentOS系統中使用gcc編譯并使用動態庫了。