Sun Studio 12:C 用户指南

B.2.41 -m32|-m64

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

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

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

使用 -m32 编译的目标文件或库不能与使用 -m64 编译的目标文件或库链接。

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

请注意,在以前的编译器发行版中,内存模型 ILP32 或 LP64 是通过 -xarch 选择指令集来隐式指定的。从 Sun Studio 12 编译器开始,就不再是这样了。在大多数平台上,只需在命令行上添加 -m64,就可以创建 64 位对象。

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

另请参见 -xarch