
我第一次在筆記型電腦上安裝 64 位元 Ubuntu。現在我正在尋找一種方法在這個作業系統上編譯我的舊生物學 C++ 專案。我有一個 .sh 文件,它為我的專案安裝所有必需的軟體包,以便在新安裝的 32 位元 Ubuntu 上進行編譯。該文件的內容如下:
#!/bin/sh
apt-get update # To get the latest package lists
apt-get install build-essential -y
apt-get install freeglut3-dev -y
apt-get install libsdl1.2-dev -y
apt-get install libsdl-image1.2-dev -y
apt-get install libsdl-mixer1.2-dev -y
apt-get install libopenscenegraph-dev -y
現在的問題是,在我的 64 位元 Ubuntu 上安裝這些軟體包並想要使用相應的 Makefile 編譯我的專案後,我收到以下錯誤訊息:
/usr/bin/ld: skipping incompatible ../../gllib-3.0b3/lib/libgll.a when searching for -lgll
/usr/bin/ld: cannot find -lgll
檢查後,我現在知道該libgll.a
檔案是為elf33-i386
架構編譯的。因為我不知道如何為 64 位元架構重新編譯此文件,所以我非常確定必須在 32 位元架構中編譯整個專案。
長話短說,我現在的問題是:如何使這個專案編譯為 32 位元應用程序,並在 64 位元 Ubuntu 上運行它?
我的猜測是,我必須使用該命令dpkg --add-architecture i386
,然後使用apt-get install <package-name>:i386
.該方法的問題是,這apt-get install libsdl1.2-dev:i386
需要我卸載該build-essential
軟體包。
當然最後我還必須修改我的makefile
,添加-m32
到CXXFLAGS
(和其他行?)。makefile
如果您需要幫助我,我可以發布我的信息。 ^^
我首先嘗試的是按照我在以前的 32 位元機器上的方式簡單地安裝所有內容。
問題是,我收到以下編譯錯誤: /usr/bin/ld: 在搜尋 -lgll 時跳過不相容的../../gllib-3.0b3/lib/libgll.a
這讓我覺得我的(5 歲的)可能不相容於作為 64 位元應用程式運行。
或者您知道我是否應該能夠將其編譯為本機 64 位元? ^^
答案1
非常奇怪的是,無論您嘗試編譯什麼程序,都會附帶一個 32 位元二進位庫而不是源代碼,但顯然可以找到該庫這裡,如果你編譯它,你應該得到一個 64 位元 libgll,你應該可以用它來編譯這個程式的 64 位元。