2016-07-24 101 views
2

我有一系列關於這個問題的問題,並希望保持簡單,概念化和可以實際嘗試的事情。C++將用RHEL4 32位編寫的應用程序遷移到RHEL6 64位

我的C++應用程序有許多庫,其中一些是第三方的,比如2007年的boost,antlr,libxml2等。我爲它們編譯了32位庫,它們使用-m32標誌編譯。在方法

問題我非常希望能夠通過在64位操作系統RHEL6 32位複製到運行該應用程序,但我看到它與分段故障崩潰。需要對此進行單獨分析,我尚未完成。

第二種方法是使用-32位庫和32位編譯器g ++ 3.4.6在64位上編譯應用程序。這編譯好。但是,我正在使用boost多線程庫獲得分段錯誤。爲什麼需要更多的調查。

第三種方法,將是非常困難的一個,因爲我需要找到一些舊庫的源代碼也將在64位上重新編譯爲64位應用程序。

是否還有其他方法可以採用,並且我還錯過了我的方法?

+0

把它扔到garbge ...我在開玩笑......真的,我希望你得到答案 –

+0

當然。這項工作是非技術性的,所以我不認爲你和我需要:) – Learner

+0

很容易,運行在64位主機的32位碼頭容器。 – YOU

回答

2

有沒有其他的方法可以採取,我也錯過了 我的方法有什麼?

您錯過了非常明顯的一個:port並將您的應用程序構建爲本機64位應用程序。

您當然可以期望在轉換到本機64位體系結構時發現問題。但是重要的是要明白,這些問題在你的代碼中是真正的bug,在原來的32位平臺上直到現在都被隱藏或未被檢測到。這將是一個很好的機會找到它們,並解決它們。

在那裏,做到了。

遷移過程完成後,您將獲得本機64位應用程序,這是具有長期支持的最佳可能情況。恰恰如此,本週的新聞是來自流行的Linux發行版about discontinuing 32 bit support altogether的公告。 32位正在出路。在某些情況下,您將不再有運行32位應用程序的選項(因爲沒有本地32位Linux發行版,就沒有任何理由構建multilib 64/32版本)。做好準備並投入時間,同時有時間有序地將遷移週期設置爲64位,然後確定地毯已經從腳下拔出,下一個Linux平臺將只有64位,並且您的關鍵任務應用程序不是64位準備好的。

它也不會讓我感到驚訝,因爲multilib兼容庫的問題是由multilib中的問題和錯誤造成的。對multilib庫的需求不斷下降;隨着時間的推移,它們的使用越來越少;他們越來越少,支持也越來越少;沒有人真的想浪費更多的時間進行測試,並確保它們仍然能夠正常工作。