2012-06-27 60 views
0

我試圖建立cwiid蟒蛇3.2綁定利用Wiimote的攪拌機2.63。我的操作系統是Ubuntu 12.04。 我設置了virtualenv爲構建提供正確的python版本。 這裏是我做的,到目前爲止(bash的殼記錄):如何編譯一個特定版本的python的Python庫?

# Set up virtualenv with python3.2 
sudo apt-get install python-setuptools 
sudo easy_install virtualenv 
virtualenv -p python3.2 --no-site-packages ~/env/cwiid_for_blender 
# to activate, type this: 
source ~/env/cwiid_for_blender/bin/activate 
python --version # returns "Python 3.2.3" 

# Build cwiid 
# prerequisites 
sudo apt-get install bison bluez libbluetooth3 libbluetooth-dev libgtk2.0-0 libgtk2.0-dev 
# download and compile sources of cwiid 
mkdir -p ~/Downloads/cwiid 
cd ~/Downloads/cwiid 
git clone https://github.com/abstrakraft/cwiid.git 
cd cwiid 
source ~/env/cwiid_for_blender/bin/activate 
aclocal 
autoconf 
./configure 
make 

失敗的原因cwiid通常對Python 2.7版構建的。在配置腳本有這樣一行:

PYTHON_VERSION=`$PYTHON -c 'import sys; print sys.version[:3]'` 

其改爲3.2語法像這樣經過:

PYTHON_VERSION=`$PYTHON -c 'import sys; print(sys.version[:3])'` 

本作劇本開始編譯,但未能擊中下面一行時:

gcc -L../libcwiid -rdynamic -o wminput main.o conf.o c_plugin.o uinput.o action_enum.o util.o py_plugin.o parser.o lexer.o -lcwiid -lbluetooth -ldl -lpthread -lpython3.2 
/usr/bin/ld: cannot find -lpython3.2 

有趣的是,如果我在行上追加mu,腳本可以繼續執行下一個錯誤:

gcc -L../libcwiid -rdynamic -o wminput main.o conf.o c_plugin.o uinput.o action_enum.o util.o py_plugin.o parser.o lexer.o -lcwiid -lbluetooth -ldl -lpthread -lpython3.2mu 

我不明白gcc在哪裏搜索3.2庫以及我如何指定它。具體而言,我不明白是否必須修復configure腳本,或者必須更改我的環境來解決此問題。 其他人的建議目前爲止:

  • 請從python3.2->python3.2mu做一個符號鏈接。 (但在哪裏呢?試了幾個地點,無工作)
  • 添加文件,目錄來查找/etd/ld.so.conf.d/

那麼,如何GCC找到它需要建立libcwiid的python3.2庫?

回答

0

過了一段時間,很明顯configure腳本沒有正確解釋python版本。這在Makefiles中顯示出來,因爲它們包含與2.7版本的直接鏈接。在對make文件進行了更正之後,編譯進入了真正的問題。所以現在,我試圖移植真實的代碼。

0

首先,確保你已經安裝了Python開發庫。

sudo apt-get install python3.2-dev 

其次,我不明白爲什麼它需要Python庫來建立它。 libcwiid似乎不包含任何Python或包含Python庫。我建議你刪除-lpython3.2並看看會發生什麼。包裝libcwiid的Python模塊當然需要Python,但這是另一個問題。

另請注意,cwiid顯然不支持Python 3.但是,這只是一個問題,如果你想cwiid Python模塊,即如果你想從Python 3使用它。你有錯誤是編譯libcwiid,不過,這是一個C庫。

+0

我會試試看。如果我正確理解了你的話,那意味着'configure'腳本中存在一個缺陷,我將嘗試糾正。 – Pascal

+0

@tuner:我所說的首先是確保安裝了libpython3.2,其次我認爲配置腳本根本不需要包含libpython。如果這是一個「缺陷」或不是由你決定。你不安裝python3.2-dev在配置腳本中最明顯不是缺陷。 –

+0

libpython3.2已安裝(並且已安裝)。它似乎與m(malloc)和u(unicode)啓用安裝。 libcwiid確實需要python庫並且抱怨py_plugin.c中的未定義引用。也許cwiid編譯的標誌也需要m和u標誌? – Pascal

相關問題