在32位系統下編譯64位程序
由於某些需要要編譯個64位程序,而機子裝的系統是32位。因爲不想裝上64位系統(麻煩&沒空間&得用虛擬機),所以嘗試了下在32位下編譯。
首先是設置gcc生成64位的目標代碼,這倒是好辦,用-m64選項就行。然而光是有這一點還不夠,編譯本身是要鏈接其他的庫的,而64位代碼沒有辦法鏈接32位的庫。
首先是要裝上64位的C庫,這比較好辦,Ubuntu裏有libc6-amd64和libc6-dev-amd64這兩個包,將其裝上。
然後是gcc的64位庫,這個比較麻煩,32位Ubuntu裏沒有提供相應包,因此得到網上去找。我是在http://packages.ubuntu.com上找的,下載amd64架構的包。需要下載的是這兩個包子:gcc4.2和libgcc,用歸檔管理器打開下載下來的deb文件,並打開其中的data.tar.gz包,將其中的.so、.a和.o文件解壓到/usr/lib64中(需要root權限,可先解壓到/tmp再複製過去)。
然後因爲用了C++,所以要裝上C++的64位庫,這個源裏也沒有,同樣是下載解壓。
以上是一些基本的包,在其實中一般不只這些,要根據說明文檔下載相應的包解壓,而且相應包所依賴的包也要下載解壓,所以會很麻煩的,沒事就別跨平臺編譯吧。
最後就要給編譯加上-m64參數