Sun Studio 12:C++ 用户指南

A.2.50 -m32|-m64

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

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

ILP32 内存模型(32 位 int、long 和 pointer 数据类型)是所有 Solaris 平台及未启用 64 位的 Linux 平台上的缺省选项。LP64 内存模型(64 位 long 和 pointer 数据类型)是启用了 64 位的 Linux 平台的缺省选项。只有启用了 LP64 模型的平台上才允许使用 -m64

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

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

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

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

另请参见 -xarch