簡體   English   中英

將C ++ 14 Linux應用程序移植到Solaris 10和11

[英]Port C++14 Linux application to Solaris 10 and 11

當前正在將現有的c ++ linux應用程序移植到Solaris 10和11(首先是x86,然后是SPAARC)。

從在solaris 10上安裝gcc5g ++開始並開始編譯。 在math.h中發現錯誤,發現這是我安裝的g ++ 5.5版本中的錯誤。 由於這個錯誤,我得到類似的錯誤


/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include-fixed/math.h:53:12:錯誤:尚未使用std :: double_t聲明'std :: double_t' ; ^

/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include-fixed/math.h:55:12:錯誤:尚未使用std :: fpclassify聲明'std :: fpclassify' ; ^

/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include-fixed/math.h:56:12:錯誤:尚未使用std :: isfinite聲明“ std :: isfinite” ; ^


由於我的應用程序使用了c ++ 14構造,而g ++ 4.92並不完全支持。 需要更高版本的g ++(5.5以上)

我找不到可以在Solaris 10上安裝更高版本的g ++的軟件包,因此我使用安裝了g ++ 7.3的Solaris 11機器嘗試執行Solaris 11到Solaris 10上生成的可執行文件,出現以下錯誤:


ld.so.1:hellod:致命:libc.so.1:找不到版本“ SUNWpublic”(由文件/ Desktop / hellod要求)ld.so.1:hellod:致命:libc.so.1:打開失敗:沒有這樣的文件或目錄被殺死


問題

  • 還有其他方法可以解決我面臨的錯誤嗎?
  • 我可以在Solaris 11上編譯並使其在Solaris 10上運行嗎?
  • 在Solaris 10的g ++上安裝更高版本的其他方法是什么?
  • 我可以交叉編譯/移植此應用程序的其他替代方法有哪些?

非常感謝與該主題相關的任何幫助和指示。

首先,要支持更高版本的C ++標准,您的Solaris 10安裝必須是最新的。 有關原因的示例,請參見無法在Solaris 10上使用GCC 5.5包含cmath 閱讀注釋-有一些修補程序需要應用到Solaris 10,以使其與C ++ 11以及大概的C ++ 14兼容。

通常,您無法在Solaris 11上進行編譯,也無法在Solaris 10上運行生成的二進制文件。

好消息是,您應該能夠在Solaris 10上編譯並可以在Solaris 11上正常運行,因此您不必維護兩個單獨的環境,也不必提供兩個單獨的Solaris產品。 您將要使用二進制文件對此進行測試,但是從理論上講,它應該可以工作-根據我的經驗,它確實可以工作。

我找不到適用於Solaris 10的任何更高版本(大於5的版本),因此您可能必須引導自己的GCC 7或更高版本。 有關在上構建GCC 4.9.0的示例,請參見https://unix.stackexchange.com/questions/446760/how-to-build-a-gcc-4-9-0-successfully-on-solaris-10-sparc Solaris 10 SPARC。 請注意,根據以下發布內容,對Solaris 10的GCC支持可能即將終止: https//gcc.gnu.org/ml/gcc/2018-10/msg00139.html

因此,我認為是時候在GCC 9中過時了對該版本的支持,因此在GCC 10中將其刪除了。

我已經有好幾年沒有在Solaris 10上構建GCC了,所以我不知道您在構建GCC 7或8時會遇到什么。

另一種可能的替代方法是使用Oracle Developer Studio代替GCC。 12.6版支持C ++ 14,並且可用於Solaris 10和11。

一個警告-無論您如何編譯,幾乎都肯定要靜態鏈接libgcclibstdc++ ,尤其是如果您編譯自己的GCC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM