📜  from .cv2 import * ImportError: home pi .local lib python3.7 site-packages cv2 cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8 - Python (1)

📅  最后修改于: 2023-12-03 14:41:20.166000             🧑  作者: Mango

ImportError: home pi .local lib python3.7 site-packages cv2 cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8 - Python

这个错误在使用OpenCV进行图像处理时可能会出现。而此错误的原因是因为在Ubuntu 18.04或更高版本中使用OpenCV时,会出现链接错误的问题。

原因

这是由于OpenCV使用的一个gcc编译器的问题,它尝试链接__atomic_fetch_add_8符号,但在一些情况下它没有被包含在libc.so.6文件中。

解决方案

有两种方法可以解决这个错误。第一种方法是使用OpenCV的Python绑定。这个问题似乎只会影响C++编写的程序。因此,Python的安装似乎能够解决这个问题。

如果你以前没有安装过Python或OpenCV,你可以按照下面的步骤进行安装:

sudo apt-get update
sudo apt-get install python3
sudo apt-get install python3-pip
sudo pip3 install opencv-python

如果你已经安装了Python和OpenCV,请尝试使用下面的命令升级OpenCV:

sudo apt-get update
sudo apt-get install libopencv-dev

第二种方法是手动将libstdc++库链接到你的程序中。

g++ your_program.cpp `pkg-config --cflags --libs opencv` -lstdc++
结论

这个错误可以通过两种方法来解决。如果你正在使用Python,则安装Python和OpenCV能够解决这个问题。如果你正在使用C++编写程序,则手动将libstdc++库链接到你的程序中能够解决这个问题。