在CentOS上使用GCC編譯動態庫(共享庫)的方法如下:
準備源代碼文件。假設你有兩個源代碼文件:libexample1.c
和 libexample2.c
。
創建頭文件。為了使其他程序能夠使用你的動態庫,你需要創建一個頭文件(例如:example.h
),并在其中聲明你希望在庫中提供的函數原型。
編寫Makefile。創建一個名為Makefile
的文件,其中包含以下內容:
CC = gcc
CFLAGS = -Wall -fPIC
LIB_NAME = libexample.so
SOURCES = libexample1.c libexample2.c
OBJECTS = $(SOURCES:.c=.o)
all: $(LIB_NAME)
$(LIB_NAME): $(OBJECTS)
$(CC) -shared -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJECTS) $(LIB_NAME)
在這個Makefile中,我們定義了編譯器(CC
)、編譯選項(CFLAGS
)、庫名稱(LIB_NAME
)和源代碼文件(SOURCES
)。我們還定義了如何從源代碼文件生成目標文件(.o
),以及如何將目標文件鏈接到動態庫。
make
命令:make
這將生成名為libexample.so
的動態庫。
LD_LIBRARY_PATH
環境變量中,并在編譯時鏈接庫。例如,如果你有一個名為main.c
的程序,可以使用以下命令編譯它:gcc main.c -L. -lexample -o main
這里,-L.
告訴編譯器在當前目錄中查找庫,-lexample
告訴編譯器鏈接名為libexample.so
的庫?,F在你可以運行生成的可執行文件main
,它將使用你的動態庫。