我试图建立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