我試圖建立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庫?
我會試試看。如果我正確理解了你的話,那意味着'configure'腳本中存在一個缺陷,我將嘗試糾正。 – Pascal
@tuner:我所說的首先是確保安裝了libpython3.2,其次我認爲配置腳本根本不需要包含libpython。如果這是一個「缺陷」或不是由你決定。你不安裝python3.2-dev在配置腳本中最明顯不是缺陷。 –
libpython3.2已安裝(並且已安裝)。它似乎與m(malloc)和u(unicode)啓用安裝。 libcwiid確實需要python庫並且抱怨py_plugin.c中的未定義引用。也許cwiid編譯的標誌也需要m和u標誌? – Pascal