在CentOS上使用GCC生成动态库(共享库)的步骤如下:
- 编写源代码并保存为
.c
文件。例如,创建一个名为hello.c
的文件,内容如下:
#includevoid hello() { printf("Hello from the shared library!\n"); }
- 使用GCC编译源代码为位置无关代码(Position Independent Code, PIC)。这样生成的
.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
的文件,内容如下:
#includevoid 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!