在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
的库。现在你可以运行生成的可执行文件main
,它将使用你的动态库。