我需要編譯和鏈接有人到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一起運行?
謝謝你的指導
我需要編譯和鏈接有人到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一起運行?
謝謝你的指導
如果你建立一個程序使用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++編譯團隊