2013-01-24 175 views
0

我正在尋找教程如何在Ubuntu 32位體系結構中編譯64位體系結構的項目。我必須把這個項目放在x86_64架構的共享主機上。我無法在遠程機器上編譯此項目,因爲我沒有權限爲此項目安裝一些依賴項。在Ubuntu 32位編譯爲64位體系結構

當我嘗試從我的電腦(ubuntu 32位)編譯項目時,執行失敗,因爲浮點異常。與簡單的hello_world應用程序相同的場景。

我總是使用gcc,ld和初學者,我總是使用編譯軟件包,但現在我必須爲不同於我的目標機器編譯。

現在我發現我需要安裝g ++ - multilib並添加到CCFLAGS -m64到gcc。

現在我有象這樣的錯誤:

/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc 

有什麼辦法來編譯內aplication依賴庫,所以我並沒有解決遠程機器上的依賴庫。

+0

你有64位處理器嗎?你不能安裝一個64位的發行版,並且使用一個32位'chroot'子系統來處理你的32位特定的東西嗎?如果你沒有一個64位的處理器(例如只有一箇舊的ATOM上網本),你可能會遇到麻煩(因爲在32位處理器上模擬64位機器是痛苦和緩慢的)。 –

+0

在遠程計算機上,有Intel Xeon E5620,其中包含4個內核和x86_64 linux。在我的筆記本電腦上有舊的奔騰IV不是64位。我只想編譯該項目並將其複製到服務器並在那裏運行。我不想在我的筆記本電腦上運行編譯的項目。 –

回答

0

您需要安裝64位庫包。

apt-get install ibc6-dev-amd64 

或東西接近(我曾經在工作中Ubuntu的機器,但我使用的Fedora在家裏,所以甚至沒有試圖嘗試什麼我的建議 - 我知道原則是正確的,但確切的細節有點模糊)

+0

這可能只適用於64位內核的64位處理器。然後,有一個64位的分佈是明智的(並使用'chroot' ed,也許'debootstrap'編輯,內部32位分佈)。 –

+1

雖然已經有一段時間了,但只要編譯器(以及彙編器和鏈接器)能夠編譯64位,在32位機器上編譯和構建就可以了。這就是我和其他一些人在AMD第一次推出64位處理器時用來構建第一個64位內核的方式。構建內核比構建可執行文件更困難。當然,對於64位二進制文​​件有任何用處,你需要一個64位處理器上的64位操作系統,那麼爲什麼不通過ssh或類似的機器編譯呢? –