对libusb_get_parent()的未定义引用 - 编译freenect

时间:2015-03-03 15:38:10

标签: makefile kinect

我想安装一些库,以便在此链接后连接Raspberry中的Kinect 360:http://www.kdab.com/setting-up-kinect-for-programming-in-linux-part-1/

首先,我在Ubuntu上检查过这一切,一切都很好。 但是,当我想构建libfreenect(使用make)时会显示以下错误:

../lib/libfreenect.so.0.5.2: undefined reference to 'lisusb_get_parent'
collect2: ld returned 1 exit status

我是Raspberry的新手,我不知道如何解决这个问题。

任何帮助表示赞赏!! :)

谢谢!

2 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,从全新安装的Raspbian 2015-02-16开始。显然(基于this),你用apt-get获得的libusb版本很旧。根据该链接和其他地方的建议,我的解决方法是从更新的来源构建libusb,并说服libfreenect使用它:

抓住编译libusb和libfreenect所需的软件包:

sudo apt-get install git cmake build-essential
sudo apt-get install freeglut3-dev libxmu-dev libxi-dev
sudo apt-get install libudev-dev

删除现有的libusb,如果它在那里:

sudo apt-get remove libusb-1.0-0-dev

获取libusb-1.0.18的来源:

wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.18/libusb-1.0.18.tar.bz2
tar -xvf libusb-1.0.18.tar.bz2

构建并安装更新的libusb:

cd libusb-1.0.18/
./configure --prefix=/usr --disable-static
make
sudo make install

丑陋的黑客说服libfreenect使用新的libusb库:

sudo ln -s /usr/lib/libusb-1.0.so /usr/lib/arm-linux-gnueabihf/libusb-1.0.so

然后你应该能够构建libfreenect。

答案 1 :(得分:4)

sudo ln -s /usr/lib/libusb-1.0.so /usr/lib/x86_64-linux-gnu/libusb-1.0.so

当你使用x86_64机器时