解决OpenCV4出现“/usr/bin/ld:cannot find -lcudart_static.../usr/bin/ld: cannot find -lx86_64-linux-gnu“问题
Ubuntu18.04解决OpenCV4出现“/usr/bin/ld: cannot find -lcudart_static.../usr/bin/ld: cannot find -lx86_64-linux-gnu”问题
- 问题描述
- 问题定位
- 尝试方法
- 终极方法
- The end
问题描述
安装完成OpenCV4.3.0后,在编译示例时遇到如下问题:
具体描述如下:
g++ example.cpp -o example.o -std=c++11 -c -Wall -I/home/brainiac/Program/opencv4/include/opencv4/opencv -I/home/brainiac/Program/opencv4/include/opencv4
g++ example.o -o opencv_example -L/home/brainiac/Program/opencv4/lib -L-L/usr/local/cuda-10.1 -L-L/usr/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cudabgsegm -lopencv_cudafeatures2d -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_cudacodec -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_cudaoptflow -lopencv_optflow -lopencv_cudalegacy -lopencv_videoio -lopencv_cudawarping -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_imgproc -lopencv_cudaarithm -lopencv_core -lopencv_cudev -lm -lpthread -lGL -lGLU -lcudart_static -ldl -lrt -lnppc -lnppial -lnppicc -lnppicom -lnppidei -lnppif -lnppig -lnppim -lnppist -lnppisu -lnppitc -lnpps -lcublas -lcudnn -lcufft -llib64 -lx86_64-linux-gnu
/usr/bin/ld: cannot find -lcudart_static
/usr/bin/ld: cannot find -lnppc
/usr/bin/ld: cannot find -lnppial
/usr/bin/ld: cannot find -lnppicc
/usr/bin/ld: cannot find -lnppicom
/usr/bin/ld: cannot find -lnppidei
/usr/bin/ld: cannot find -lnppif
/usr/bin/ld: cannot find -lnppig
/usr/bin/ld: cannot find -lnppim
/usr/bin/ld: cannot find -lnppist
/usr/bin/ld: cannot find -lnppisu
/usr/bin/ld: cannot find -lnppitc
/usr/bin/ld: cannot find -lnpps
/usr/bin/ld: cannot find -lcudnn
/usr/bin/ld: cannot find -lcufft
/usr/bin/ld: cannot find -llib64
/usr/bin/ld: cannot find -lx86_64-linux-gnu
collect2: error: ld returned 1 exit status
Makefile:8: recipe for target 'opencv_example' failed
make: *** [opencv_example] Error 1
本来应该写在安装过程中分享,但是这个问题太坑了,网上搜了半天没找到解决办法(有一个类似的问题,下面会说明),因此另拿出来分享一下。
问题定位
通过观察发现全是静态库的问题,而OpenCV4是根据opencv4.pc查找相应头和库。
因此根据自己的安装位置找到opencv4.pc文件,查看该文件。
#<open_path>/lib/pkgconfig/opencv4.pc
#比如安装在/usr/local/opencv4下:
$ sudo vim /usr/local/opencv4/lib/pkgconfig/opencv4.pc
尝试方法
找到一个解决方法是,修改CUDA的库链接目录:
文件最后的"-L-L/usr/local/cuda-10.1"修改为"-L/usr/local/cuda-10.1/lib64",其中"/usr/local/cuda-10.1"是安装CUDA的目录,改为自己安装的路径即可,如下所示:
这个方法的确部分的解决了问题,重新make示例文件时解决了部分库依赖报错问题,报错信息变为:
g++ example.cpp -o example.o -std=c++11 -c -Wall -I/home/brainiac/Program/opencv4/include/opencv4/opencv -I/home/brainiac/Program/opencv4/include/opencv4
g++ example.o -o opencv_example -L/home/brainiac/Program/opencv4/lib -L-L/usr/local/cuda-10.1 -L-L/usr/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cudabgsegm -lopencv_cudafeatures2d -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_cudacodec -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_cudaoptflow -lopencv_optflow -lopencv_cudalegacy -lopencv_videoio -lopencv_cudawarping -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_imgproc -lopencv_cudaarithm -lopencv_core -lopencv_cudev -lm -lpthread -lGL -lGLU -lcudart_static -ldl -lrt -lnppc -lnppial -lnppicc -lnppicom -lnppidei -lnppif -lnppig -lnppim -lnppist -lnppisu -lnppitc -lnpps -lcublas -lcudnn -lcufft -llib64 -lx86_64-linux-gnu
/usr/bin/ld: cannot find -llib64
/usr/bin/ld: cannot find -lx86_64-linux-gnu
collect2: error: ld returned 1 exit status
Makefile:8: recipe for target 'opencv_example' failed
make: *** [opencv_example] Error 1
仅剩下,llib64和lx86_64-linux-gnu,然后还是按着这个库文件依赖这个方向查找,但是没有任何这两个库的信息,甚至卸载重装了若干次。
终极方法
在观察了opencv4.pc的结构后,最后决定破釜沉舟。
上面方法证明了一个-L可以解决一定问题,同时只要将-llib64与前面合并就可以构造出所需路径。因此将opencv4.pc最后部分修改为以下内容:
简单来讲就是将opencv4.pcwen文件中"-L-L/usr/local/cuda-10.1 -llib64 -L-L/usr/lib -lx86_64-linux-gnu"修改为"-L/usr/local/cuda-10.1/lib64 -L/usr/lib/x86_64-linux-gnu".
再次编译示例成功运行,暂时没有发现有什么不妥的地方,如果有什么问题再议。
但是没有人遇到这个问题吗?是因为我安装路径太奇怪装在/home目录下?但是也试了装在/usr/lib下还是这个问题。
The end
希望有所帮助,enjoy coding.
解决OpenCV4出现“/usr/bin/ld:cannot find -lcudart_static.../usr/bin/ld: cannot find -lx86_64-linux-gnu“问题相关推荐
- php os darwin,解决Mac os(10.12.6) 编译php7提示“/usr/lib/system/libsystem_darwin.dylib”找不到...
直接引用老外的问题描述: I can't install php71 with brew install php71 --with-httpd as an error appears during t ...
- 启动rabbitmq后台管理插件出错 /usr/lib64/erlang/erts-10.3.5.12/bin/beam.smp: error while loading shared librari
启动后台管理插件 [root@localhost opt]# rabbitmq-plugins enable rabbitmq_management 出错 [root@localhost opt]# ...
- 如何解决opencv4.5.5.64版本中imread函数找不到引用的问题
如何解决opencv4.5.5.64版本中imread函数找不到引用的问题 小白刚接触python,找了网上好多教程安装opencv,大同小异,不知道啥原因导致这样的,会不会是少安装了东西,还是版本太 ...
- Qt5学习笔记之bin文件合成工具二:bin文件的读取和写入
目录 概述 实现步骤 1.调整界面并布局. 2.显示文件路径和偏移量 3.bin文件读取 4.将读取的bin文件写入到新的文件. 5.测试运行效果: 6.解决00结束符问题 GitHub下载 概述 上 ...
- ESP32 bin文件生成及多个bin文件合并指南
文章目录 1. 前言 2. 硬件及分区表 3. 编译 4. 烧录 4.1 使用 idf flash 命令烧录 4.2 使用 Flash Download Tools 工具烧录 4.3 Flash Do ...
- /cygdrive/c/MinGW/bin/autoconf-2.68: line 501: /mingw/bin/autom4te-2.68: No such file or directory
出现如下错误 编译openssh的时候 # autoconf/cygdrive/c/MinGW/bin/autoconf-2.68: line 501: /mingw/bin/autom4te-2.6 ...
- C#中无法将文件“obj\x86\Debug\xxx.exe”复制到“bin\Debug\xxx.exe”。文件“bin\Debug\xxx.exe”正由另一进程使用,因此该进程无法访问此文件.
一.遇到的问题 报错:无法将"obj\Debug*."复制到"bin\Debug*.",文件正在由另一个进程使用,因此该进程无法访问此文件 无法将文件" ...
- 解决mysqlslap执行命令报错(BEGIN failed--compilation aborted at //bin/mysqlslap line 2098)usr...
今天安装了一个查询分析MySQL数据库的慢查询分析工具.但是使用命令做查询时候报以下错误. Can't locate DBI.pm BEGIN failed--compilation aborted ...
- C/C++静态库编译报错(/usr/bin/ld:cannot find -lpthread,/usr/bin/ld:cannot find -lc)
报错截图 原因:缺少libpthread.a 解决方法: yum install glibc-static
最新文章
- 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)
- csu 1554: SG Value 思维题
- python进程、线程的学习心得
- c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”
- P4383 [八省联考 2018] 林克卡特树(wqs二分、树形dp)
- csp初赛复习(往年真题+解析)
- es2015(es6)基础知识整理(更新中...)
- java改变this指向_[Java教程]JavaScript中的this指向
- Kafka集群安装部署、Kafka生产者、Kafka消费者
- 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
- DsoFramer2
- java中怎么画弧线加粗,CAD中怎么把一段线、曲线或圆弧加粗
- php调用微信公众号支付接口,Thinkphp实现微信公众号支付接口
- 智信分销拼团拍卖商城v3.38.6直播商城小程序
- server sql 将出生日期转为年龄_SQL中将用户的出生年月转换成对应的年龄
- [转贴]金庸的九家著名公司
- 详解数据分析中的行为分析
- ll -h和du -sh的区别
- 【CDN】- 什么是CDN
- raise ContentTooShortError(urllib.error.ContentTooShortError: <urlopen error retrieval incomplete:
热门文章
- .vue的文件在vscode里面是白色?
- 洛谷 P1086 花生采摘
- libusb-win32学习笔记(一)
- [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别
- [转载] python numpy矩阵运算加速器 NumExpr
- MATLAB获取系统时间
- 从零配置webpack(react+less+typescript+mobx)
- 接口测试系列:工作中所用(十:配置文件的读写操作 configparser模块)
- spark报错:invalid token
- JQuery之事件冒泡