/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference
时间: 2023-09-23 16:10:41 浏览: 72
这个错误通常表示链接器无法找到对应的符号引用。在这种情况下,出现 undefined reference 错误可能是因为链接器无法找到 libopencv_highgui.so 中定义的某个符号。
解决这个问题的一种方法是确保你正确地链接了 OpenCV 库。请确认你已经正确包含了 `-lopencv_highgui` 链接选项,并且确保你的 OpenCV 库已正确安装并位于正确的路径中。
如果你确认了以上步骤,但仍然遇到问题,可能是因为缺少其他依赖项。在链接时,除了 `-lopencv_highgui` 之外,你还需要确保链接了其他所需的 OpenCV 库(例如 `-lopencv_core`、`-lopencv_imgproc` 等)。请根据你的需求和使用的 OpenCV 功能添加适当的链接选项。
如果问题仍然存在,请提供更多详细信息,例如完整的错误日志和编译命令,以便我能够更具体地帮助你解决问题。
相关问题
/usr/bin/ld: 当搜索用于 /home/akira/gujia_ws/src/bodyreader/lib/libastra.so 时跳过不兼容的 -lastra /usr/bin/ld: 找不到 -lastra
根据引用\[1\]中的内容,您可以尝试使用以下命令来解决"/usr/bin/ld: 找不到 -lastra"的问题:
```
sudo ln -s /home/akira/gujia_ws/src/bodyreader/lib/libastra.so /usr/lib/x86_64-linux-gnu/libastra.so
```
这将创建一个软链接,将libastra.so文件链接到/usr/lib/x86_64-linux-gnu目录下。这样ld命令就能找到所需的库文件了。
另外,根据引用\[2\]中的警告信息,您可能需要解决libopencv_imgcodecs.so.3.2、libopencv_imgproc.so.3.2和libopencv_core.so.3.2与libopencv_highgui.so.3.2.0之间的冲突。您可以尝试更新这些库文件或者使用与libopencv_highgui.so.3.2.0版本匹配的libopencv_imgcodecs.so、libopencv_imgproc.so和libopencv_core.so文件。
最后,根据引用\[3\]中的说明,您可以使用-Wl,-rpath选项来指定运行时库的位置,例如:
```
gcc -o your_program your_program.c -lastra -Wl,-rpath=/home/akira/gujia_ws/src/bodyreader/lib
```
这将在编译时指定libastra.so库的位置。
希望这些信息对您有帮助!
#### 引用[.reference_title]
- *1* [安装opencv报错/usr/bin/ld: warning: libpcre.so.1, needed by /home//anaconda3/lib/libglib-2.0.so.0](https://blog.csdn.net/yanzhiwen2/article/details/121757639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [/usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /usr/lib/x86_64-linux-gnu/libopencv_high](https://blog.csdn.net/keeplearning365/article/details/121549806)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [/usr/bin/ld: warning: libcudnn.so.7, needed by *gpu.so, not found (try using -rpath or -rpath-link)](https://blog.csdn.net/chengyq116/article/details/104602920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
ubuntu18.04安装yoloV
3
1. 安装CUDA和cudnn
首先需要安装CUDA和cudnn,这里不再赘述,可以参考官方文档进行安装。
2. 安装OpenCV
sudo apt-get update
sudo apt-get install libopencv-dev
3. 下载yoloV3
git clone https://github.com/pjreddie/darknet.git
4. 编译
cd darknet
mkdir build_release
cd build_release
cmake -DOpenCV_DIR=/usr/local/share/OpenCV -DGPU=ON -DCMAKE_INSTALL_PREFIX=../install_release ..
make -j8
make install
5. 测试
下载权重文件
wget https://pjreddie.com/media/files/yolov3.weights
测试图片
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
6. 可能出现的问题
- 缺少libopencv_highgui.so.3.3
解决方法:
sudo apt-get install libopencv-highgui-dev
- 缺少libopencv_videoio.so.3.3
解决方法:
sudo apt-get install libopencv-videoio-dev
- 缺少libopencv_imgcodecs.so.3.3
解决方法:
sudo apt-get install libopencv-imgcodecs-dev
- 缺少libcudart.so.10.0
解决方法:
sudo ln -s /usr/local/cuda-10.0/lib64/libcudart.so.10.0 /usr/lib/x86_64-linux-gnu/libcudart.so.10.0
- 缺少libcudnn.so.7
解决方法:
sudo ln -s /usr/local/cuda-10.0/lib64/libcudnn.so.7.0.5 /usr/lib/x86_64-linux-gnu/libcudnn.so.7
7. 其他注意事项
- 如果想要使用CPU版本,需要将-DGPU=ON改为-DGPU=OFF。
- 如果想要使用其他版本的yolo,可以将下载的yoloV3替换为其他版本的yolo。