2012-09-20 29 views
0

我需要編譯和鏈接有人到Solaris 10 SPARC 64位機具有的Sun Studio上運行程序10彙編的Sun Studio 12,在陽光工作室運行10

我有Solaris上機10 Sparc 64位,但我只能在Oracle站點上找到Sun Studio 11和12以供下載。看起來,由於它的年代,Sun Studio 10不能下載。

我的問題是,有沒有辦法使用Studio 12(帶有一組標誌設置)來編譯程序,以便它可以無縫地與Sun Studio 10一起運行?

謝謝你的指導

回答

3

如果你建立一個程序使用Studio的一個版本(如11或12.x的),你不能指望從早期版本的工作室鏈接庫。你不會說你正在使用什麼編程語言,但這個問題在Fortran和C++中最常見。例如,除非您採取措施避免此問題(請參見下文),否則使用STLport或Interval庫的C++程序將嘗試在運行時鏈接到與編譯器一起安裝的共享庫。如果該程序是使用Studio 11或12.x構建的,則與Studio 10庫鏈接將無法正常工作。

但是,如果程序僅鏈接到/ usr/lib中的默認運行時庫,無論Studio是安裝在目標系統上還是安裝了哪個版本,都無關緊要。你可以找出是否是這種情況下,由系統上運行的「LDD」在你的程序,你建立了它

% ldd myprog 

輸出將顯示該程序使用的所有共享庫,和他們來自哪裏。如果沒有任何庫位於編譯器安裝區域中,則沒有問題。

唯一的其他問題是Solaris兼容性。如果您在Solaris版本N上構建程序,則可以期望在Solaris N + 1或更高版本上運行該程序,但不能在Solaris N-1或更低版本上運行該程序。原因是Solaris保留了舊接口,但增加了新接口。程序可能取決於舊版Solaris中不存在的Solaris界面。特別是對於Solaris 10,更高版本的更新引入了不在早期更新中的新功能和接口。例如,如果您在更新10上構建程序,則該程序可能無法在原始Solaris 10上運行。

此外,如果構建系統已使用更高版本的C++運行時庫(程序包SUNWlibC)進行了修補,目標系統應該有相同或更新的補丁。您可以通過運行以下命令找出補丁版本

% showrev -p | grep SUNWlibC 

要回到我原來的圖書館的討論附帶工作室,本文

http://www.oracle.com/technetwork/articles/servers-storage-dev/linkinglibraries-396782.html

描述了分配建設方案的最佳實踐以便它們不依賴於編譯器安裝。

Steve Clamage Oracle C++編譯團隊

相關問題