Compiler construction 在sun studio 12上编译,在sun studio 10上运行

Compiler construction 在sun studio 12上编译,在sun studio 10上运行,compiler-construction,sun,sunstudio,Compiler Construction,Sun,Sunstudio,我需要编译和链接一个程序,以便某人在Solaris 10 Sparc 64位机器上运行,该机器具有Sun Studio 10 我有一台64位Solaris 10 Sparc机器,但我只能在Oracle网站上找到Sun Studio 11和12进行下载。看来,由于它的年龄,Sun Studio 10无法下载 我的问题是,有没有一种方法可以使用Studio 12(带有一组标志设置)编译一个程序,以便它可以与Sun Studio 10无缝运行 感谢您提供的指导如果您使用一个版本的Studio(如11或

我需要编译和链接一个程序,以便某人在Solaris 10 Sparc 64位机器上运行,该机器具有Sun Studio 10

我有一台64位Solaris 10 Sparc机器,但我只能在Oracle网站上找到Sun Studio 11和12进行下载。看来,由于它的年龄,Sun Studio 10无法下载

我的问题是,有没有一种方法可以使用Studio 12(带有一组标志设置)编译一个程序,以便它可以与Sun Studio 10无缝运行


感谢您提供的指导

如果您使用一个版本的Studio(如11或12.x)构建程序,您不能期望从早期的Studio版本链接到库。你不说你使用的是什么编程语言,但是这个问题最常见的是FORTRAN和C++。

例如,除非您采取步骤避免问题(见下文),使用STLPART或间隔库的C++程序将尝试在运行时链接到与编译器一起安装的共享库。如果程序是使用Studio 11或12.x构建的,那么与Studio 10库的链接将无法正常工作

但是,如果程序仅链接到/usr/lib中的默认运行时库,那么目标系统上是否安装了Studio,或者安装了哪个版本并不重要。您可以通过在构建程序的系统上运行“ldd”来确定是否存在这种情况:

输出将显示程序使用的所有共享库及其来源。如果编译器安装区域中没有任何库,则没有问题

唯一的另一个问题是Solaris兼容性。如果在Solaris版本N上构建程序,则可以在Solaris N+1或更高版本上运行该程序,但不能在Solaris N-1或更低版本上运行。原因是Solaris保留了旧接口,但添加了新接口。程序可能依赖于旧版Solaris中不存在的Solaris接口。特别是对于Solaris 10,更高版本的更新引入了早期更新中没有的新功能和界面。例如,如果您在update 10上构建程序,它可能不会在原始Solaris 10上运行

此外,如果构建系统已经用C++运行库(包SunWLBC)的后期版本进行修补,则目标系统应该具有相同或更高的补丁。您可以通过运行命令来查找修补程序版本

% showrev -p | grep SUNWlibC
回到我最初对Studio附带的库的讨论,本文

描述构建分发程序的最佳实践,以使其不依赖于编译器安装

史蒂夫·克拉梅
Oracle C++编译器团队

如果你用Studio(如11或12。x)的一个版本来构建程序,你就不能期望链接到更早的Studio版本的库。你不说你使用的是什么编程语言,但是这个问题最常见的是FORTRAN和C++。

例如,除非您采取步骤避免问题(见下文),使用STLPART或间隔库的C++程序将尝试在运行时链接到与编译器一起安装的共享库。如果程序是使用Studio 11或12.x构建的,那么与Studio 10库的链接将无法正常工作

但是,如果程序仅链接到/usr/lib中的默认运行时库,那么目标系统上是否安装了Studio,或者安装了哪个版本并不重要。您可以通过在构建程序的系统上运行“ldd”来确定是否存在这种情况:

输出将显示程序使用的所有共享库及其来源。如果编译器安装区域中没有任何库,则没有问题

唯一的另一个问题是Solaris兼容性。如果在Solaris版本N上构建程序,则可以在Solaris N+1或更高版本上运行该程序,但不能在Solaris N-1或更低版本上运行。原因是Solaris保留了旧接口,但添加了新接口。程序可能依赖于旧版Solaris中不存在的Solaris接口。特别是对于Solaris 10,更高版本的更新引入了早期更新中没有的新功能和界面。例如,如果您在update 10上构建程序,它可能不会在原始Solaris 10上运行

此外,如果构建系统已经用C++运行库(包SunWLBC)的后期版本进行修补,则目标系统应该具有相同或更高的补丁。您可以通过运行命令来查找修补程序版本

% showrev -p | grep SUNWlibC
回到我最初对Studio附带的库的讨论,本文

描述构建分发程序的最佳实践,以使其不依赖于编译器安装

史蒂夫·克拉梅 Oracle C++编译器团队< /P>