2013-07-12 153 views
6

我正在尋找如何爲需要針對32位和64位體系結構編譯的Linux應用程序設置構建計算機的建議。Linux環境構建32位和64位應用程序(C++)

據我所知,我需要一個64位的操作系統,它可以建立32和64.添加-m32標誌將產生32的正確輸出,這裏沒有挑戰。

主要問題在於庫。我不確定如何繼續......我如何確保鏈接器使用簡單庫的32位版本,例如ldl,lz,lrt?我知道我必須安裝它們的32位版本,然後配置鏈接器路徑。

另一個問題是編譯器,鏈接器,libc等版本。我是否應該使用最舊的版本,以確保所有客戶端都能正常運行?我的意思是,如果我在最新的Debian中構建應用程序,在較老的Debian中,它將無法正常工作,對嗎?

感謝您的幫助!

+4

只需擁有不同架構的虛擬機可能會更容易,然後就不會出現混淆。另外,我認爲你也可以在你的64位Linux中有一個32位的chroot,並且從chroot內部構建你的32位版本。雖然我不確定。 –

+0

謝謝!我正在考慮設置多個虛擬機的替代方案。 –

回答

2

具有64位版本的大多數Linux版本也構建了32位版本,幾乎所有庫都可用於這兩者,因此您只需將相關的32位庫與64位版本位的。在大多數情況下,路徑的配置與純64位或32位構建沒有區別。可能有一些圖書館有問題,但你真的需要去尋找那些。所有主流數據包都將具有可同時安裝32位和64位庫版本的庫。

關於「哪個libc」等,這是一個更難的問題,因爲它真的取決於你的客戶在他們的機器上有什麼 - 並且你不可能指定他們應該使用Debian ,RedHat或SuSE - 他們會非常強烈地使用他們正在使用的任何東西。使用「太舊」庫與使用「太新」庫一樣糟糕。通常的解決方案是構建多個版本,一個用於選定的RedHat版本(並且應該使用更新/舊版本的幾個步驟,以及相同範圍內的Fedora版本),Debian版本以及一個SuSE版本,可能還有一兩個發行版。

是的,在這一點上,你可能想要建立一臺帶有幾臺虛擬機的機器,這樣你就不必擁有3臺,5臺或12臺物理機器。

+0

感謝您的支持,真的有幫助! –