2012-06-27 64 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

相关问题