17.3. 使用 GCC 创建动态库
通过更轻松地更新库代码,动态链接的库(共享对象)允许通过代码重复使用和增强安全性。这部分论述了从源构建和安装动态库的步骤。
先决条件
- 了解 soname 机制
- GCC 已安装在系统上
- 库的源代码
步骤
- 使用库源更改到 目录。
使用独立于位置的代码选项
-fPIC
将每个源文件编译到对象文件中:$ gcc ... -c -fPIC some_file.c ...
对象文件具有与原始源代码文件相同的文件名,但它们的扩展名是
.o
。从对象文件链接共享库:
$ gcc -shared -o libfoo.so.x.y -Wl,-soname,libfoo.so.x some_file.o ...
使用的主版本号是 X,次版本号为 Y。
将
libfoo.so.x.y
文件复制到系统动态链路器可以找到它的适当位置。在 Red Hat Enterprise Linux 中,库的目录是/usr/lib64
:# cp libfoo.so.x.y /usr/lib64
请注意,您需要 root 权限才能操作此目录中的文件。
为 soname 机制创建符号链接结构:
# ln -s libfoo.so.x.y libfoo.so.x # ln -s libfoo.so.x libfoo.so
其它资源
- Linux 文档项目 - 计划库 HOWTO - 3.共享库