无法安装rpi_ws281x "错误:命令'gcc'失败,退出状态为1"

4

我正在尝试在我的Raspberry Pi A+上安装Neopixels库。一开始我这样做了,然后尝试运行代码,但它不起作用。我重新安装了Raspbian并仔细安装了头文件和库,我得到了以下结果:

> Downloading https://pypi.python.org/…/s…/s/setuptools/setuptools-5.7.zip
Extracting in /tmp/tmpkD2xEW
Now working in /tmp/tmpkD2xEW/setuptools-5.7
Building a Setuptools egg in /home/pi/rpi_ws281x/python
/home/pi/rpi_ws281x/python/setuptools-5.7-py2.7.egg
running install
running bdist_egg
running egg_info
creating rpi_ws281x.egg-info
writing rpi_ws281x.egg-info/PKG-INFO
writing top-level names to rpi_ws281x.egg-info/top_level.txt
writing dependency_links to rpi_ws281x.egg-info/dependency_links.txt
writing manifest file 'rpi_ws281x.egg-info/SOURCES.txt'
reading manifest file 'rpi_ws281x.egg-info/SOURCES.txt'
writing manifest file 'rpi_ws281x.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv6l/egg
running install_lib
running build_py
creating build
creating build/lib.linux-armv6l-2.7
copying neopixel.py -> build/lib.linux-armv6l-2.7
running build_ext
building '_rpi_ws281x' extension
swigging rpi_ws281x.i to rpi_ws281x_wrap.c
swig -python -o rpi_ws281x_wrap.c rpi_ws281x.i
creating build/temp.linux-armv6l-2.7
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c rpi_ws281x_wrap.c -o build/temp.linux-armv6l-2.7/rpi_ws281x_wrap.o
rpi_ws281x_wrap.c: In function ‘init_rpi_ws281x’:
rpi_ws281x_wrap.c:4638:21: warning: variable ‘md’ set but not used [-Wunused-but-set-variable]
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-armv6l-2.7/rpi_ws281x_wrap.o -L../. -lws2811 -o build/lib.linux-armv6l-2.7/_rpi_ws281x.so
/usr/bin/ld: cannot find -lws2811
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

我看到一些关于这个问题的提问:"安装libevent-dev",但是它没有起作用。
2个回答

9

我刚遇到了这个问题,虽然这已经是老问题了,但是我认为我应该在这里放上答案,帮助那些也遇到这个问题的人。问题的解决方法是你忘记在rpi_ws281x目录中运行“scons”命令,该命令将会下载更多需要的依赖包,其中包括OP所提到的缺失的ws2811库。


4
/usr/bin/ld: cannot find -lws2811
collect2: ld returned 1 exit status
这是真正的错误信息。在编译阶段中,collect2ld 的一个包装脚本。cannot find -lws2811 意味着你正在尝试链接到 libws2811,而链接器无法找到该库以解决未定义的引用。
因此,无论你想做什么,请查找如何安装缺失的库。请从这里下载库,并在运行安装脚本之前将 LD_LIBRARY_PATH 设置为指向保存该文件的位置。

谢谢您的回复,我下载了静态库,但是我对此还很陌生...所以我把libws2811.a移动到了/usr/lib...然后...LD_LIBRARY_PATH=lws2811.a? - Wilty
如果你将它移动到 /usr/lib,那么你就不需要使用 LD_LIBRARY_PATH - NlightNFotis
先生,安装进行得很顺利,您在此生和来世都有我的感激之情。 - Wilty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接