Oracle Solaris Studio 12.2:C++ 用户指南

A.2.50 -m32|-m64

指定编译的二进制对象的内存模型。

使用 -m32 来创建 32 位可执行文件和共享库。使用 -m64 来创建 64 位可执行文件和共享库。

在所有 Solaris 平台和不支持 64 位的 Linux 平台上,ILP32 内存模型(32 位 int、long、pointer 数据类型)是缺省值。在启用了 64 位的 Linux 平台上缺省为 LP64 内存模型(64 位 long 和指针数据类型)。-m64 仅允许在支持 LP64 模型的平台上使用。

使用 -m32 编译的对象文件或库无法与使用 -m64 编译的对象文件或库链接。

使用 -m32|-m64 编译的模块必须还使用 -m32 |-m64 进行链接。有关在编译时和链接时都必须指定的完整编译器选项列表,请参见3.3.3 编译时选项和链接时选项

当使用 -m64 在 x64 平台上编译具有大量静态数据的应用程序时,可能还需要使用 -xmodel=medium。请注意,部分 Linux 平台不支持中等模型。

请注意,在早期的编译器发行版中,由 -xarch 选项中选择的指令集来指定内存模型(ILP32 或 LP64)。从 Solaris Studio 12 编译器开始,就不再是这样了。在大多数平台上,仅需将 -m64 添加到命令行便可以创建 64 位对象。

在 Solaris 上,-m32 是缺省选项。在支持 64 位程序的 Linux 系统上,-m64 -xarch=sse2 是缺省选项。

另请参见 -xarch