-qmkshrobj (-shared)
适用的调用
| 选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
| -qmkshrobj | ✓ | ✓ | ✓ | ✓ |
| -shared | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
根据生成的对象文件创建共享对象。
将此选项与本主题中稍后描述的相关选项一起使用,而不是直接调用链接程序 (或使用makeC++SharedLib实用程序,在 C++ 中) 以创建共享对象。 使用此选项的优点是自动处理链接时 C++ 模板实例化 (使用模板包含目录或模板注册表) ,以及与 -qipa 链接时优化 (例如,在 -O5上执行的操作)兼容。
语法
缺省值
缺省情况下,输出对象与运行时库和启动例程链接来 创建可执行文件。
参数
优先- 指定共享对象中声明的静态 C++ 对象 (相对于其他共享对象中声明的静态对象) 的初始化顺序的优先级。 priority 可以是从 -214 782 624 (最高优先级-首先初始化) 到 214 783 647 (最低优先级-最后初始化) 的任何数字。 从 -214 783 648 到 -214 782 623 的数字保留给系统使用。 如果未指定优先级,那么将使用缺省优先级 0。 如果链接以 C 编写的共享对象,如果与 C 编译器 (xlc) 链接,或者如果共享对象没有静态初始化,那么优先级无效。
使用量
当指定 -qmkshrobj 选项时,驱动程序启动 CreateExportList 实用程序以从目标文件的输入列表创建导出列表。
除非您使用 -bE: , -bexport: 或 -bnoexpall指定要导出的符号,否则编译器将自动从共享对象导出所有全局符号。 您还可以使用 -qnoweakexp 选项来防止导出弱符号。
具有隐藏或内部可见属性的符号不会被导出。
指定 -qmkshrobj 意味着 -qpic。
您还可以将以下相关选项与 -qmkshrobj配合使用:
- -o 共享文件
- 保存共享文件信息的文件的名称。 缺省值为 shr.o。
- -qexpfile=文件名
- 保存 filename 中的所有导出符号。
- -e 名称
- 将共享可执行文件的条目名称设置为 name。
- -q[no]weakexp
- 指定标记为弱的符号是否要包含在导出列表中。 如果未显式设置此选项,那么缺省值为 -qweakexp(导出全局弱符号)。
有关使用 -qmkshrobj 创建共享库的详细信息, 以及使用具有优先级值的 -qmkshrobj 的示例, 请参阅 构造库。
预定义的宏
无。
示例
要从三个较小的对象文件构造共享库
big_lib.so,请输入以下命令:xlc -qmkshrobj -o big_lib.so lib_a.o lib_b.o lib_c.o
