0

我正在尝试使用 python 3.2 绑定构建cwiid 以利用Blender 2.63Wiimote。我的操作系统是 ubuntu 12.04。我设置了virtualenv来为构建提供正确的 python 版本。这是我到目前为止所做的(bash-shell 记录):

# 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] )'`

make 脚本开始编译,但在遇到以下行时失败:

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 库的呢?

4

2 回答 2

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 库。

于 2012-06-28T10:17:25.723 回答
0

过了一会儿,很明显configure脚本没有正确解释 python 版本。这出现在 Makefile 中,因为它们包含指向 2.7 版的直接链接。在更正 make 文件后,编译继续解决真正的问题。所以现在,我正在尝试移植真正的代码。

于 2012-07-08T17:40:56.027 回答