-qmkshrobj (-shared)

适用的调用

表 1. 接受给定选项的调用
选项 xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
-qmkshrobj
-shared    
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

输出控制

等效编译指示

无。

用途

根据生成的对象文件创建共享对象。

将此选项与本主题中稍后描述的相关选项一起使用,而不是直接调用链接程序 (或使用makeC++SharedLib实用程序,在 C++ 中) 以创建共享对象。 使用此选项的优点是自动处理链接时 C++ 模板实例化 (使用模板包含目录或模板注册表) ,以及与 -qipa 链接时优化 (例如,在 -O5上执行的操作)兼容。

语法

读取语法图跳过可视语法图 -shared
读取语法图跳过可视语法图  -q mkshrobj
读取语法图跳过可视语法图  -q mkshrobj =优先级

缺省值

缺省情况下,输出对象与运行时库和启动例程链接来 创建可执行文件。

参数

仅限 C + +优先
指定共享对象中声明的静态 C++ 对象 (相对于其他共享对象中声明的静态对象) 的初始化顺序的优先级。 priority 可以是从 -214 782 624 (最高优先级-首先初始化) 到 214 783 647 (最低优先级-最后初始化) 的任何数字。 从 -214 783 648 到 -214 782 623 的数字保留给系统使用。 如果未指定优先级,那么将使用缺省优先级 0。 如果链接以 C 编写的共享对象,如果与 C 编译器 (xlc) 链接,或者如果共享对象没有静态初始化,那么优先级无效。

使用量

当指定 -qmkshrobj 选项时,驱动程序启动 CreateExportList 实用程序以从目标文件的输入列表创建导出列表。

除非您使用 -bE: , -bexport: 或 -bnoexpall指定要导出的符号,否则编译器将自动从共享对象导出所有全局符号。 您还可以使用 -qnoweakexp 选项来防止导出弱符号。 IBM 扩展具有隐藏或内部可见属性的符号不会被导出。IBM 扩展

指定 -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

相关信息