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“问题相关推荐

  1. 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 ...

  2. 启动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]# ...

  3. 如何解决opencv4.5.5.64版本中imread函数找不到引用的问题

    如何解决opencv4.5.5.64版本中imread函数找不到引用的问题 小白刚接触python,找了网上好多教程安装opencv,大同小异,不知道啥原因导致这样的,会不会是少安装了东西,还是版本太 ...

  4. Qt5学习笔记之bin文件合成工具二:bin文件的读取和写入

    目录 概述 实现步骤 1.调整界面并布局. 2.显示文件路径和偏移量 3.bin文件读取 4.将读取的bin文件写入到新的文件. 5.测试运行效果: 6.解决00结束符问题 GitHub下载 概述 上 ...

  5. ESP32 bin文件生成及多个bin文件合并指南

    文章目录 1. 前言 2. 硬件及分区表 3. 编译 4. 烧录 4.1 使用 idf flash 命令烧录 4.2 使用 Flash Download Tools 工具烧录 4.3 Flash Do ...

  6. /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 ...

  7. C#中无法将文件“obj\x86\Debug\xxx.exe”复制到“bin\Debug\xxx.exe”。文件“bin\Debug\xxx.exe”正由另一进程使用,因此该进程无法访问此文件.

    一.遇到的问题 报错:无法将"obj\Debug*."复制到"bin\Debug*.",文件正在由另一个进程使用,因此该进程无法访问此文件 无法将文件" ...

  8. 解决mysqlslap执行命令报错(BEGIN failed--compilation aborted at //bin/mysqlslap line 2098)usr...

    今天安装了一个查询分析MySQL数据库的慢查询分析工具.但是使用命令做查询时候报以下错误. Can't locate DBI.pm BEGIN failed--compilation aborted ...

  9. C/C++静态库编译报错(/usr/bin/ld:cannot find -lpthread,/usr/bin/ld:cannot find -lc)

    报错截图 原因:缺少libpthread.a 解决方法: yum install glibc-static

最新文章

  1. 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)
  2. csu 1554: SG Value 思维题
  3. python进程、线程的学习心得
  4. c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”
  5. P4383 [八省联考 2018] 林克卡特树(wqs二分、树形dp)
  6. csp初赛复习(往年真题+解析)
  7. es2015(es6)基础知识整理(更新中...)
  8. java改变this指向_[Java教程]JavaScript中的this指向
  9. Kafka集群安装部署、Kafka生产者、Kafka消费者
  10. 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
  11. DsoFramer2
  12. java中怎么画弧线加粗,CAD中怎么把一段线、曲线或圆弧加粗
  13. php调用微信公众号支付接口,Thinkphp实现微信公众号支付接口
  14. 智信分销拼团拍卖商城v3.38.6直播商城小程序
  15. server sql 将出生日期转为年龄_SQL中将用户的出生年月转换成对应的年龄
  16. [转贴]金庸的九家著名公司
  17. 详解数据分析中的行为分析
  18. ll -h和du -sh的区别
  19. 【CDN】- 什么是CDN
  20. raise ContentTooShortError(urllib.error.ContentTooShortError: <urlopen error retrieval incomplete:

热门文章

  1. .vue的文件在vscode里面是白色?
  2. 洛谷 P1086 花生采摘
  3. libusb-win32学习笔记(一)
  4. [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别
  5. [转载] python numpy矩阵运算加速器 NumExpr
  6. MATLAB获取系统时间
  7. 从零配置webpack(react+less+typescript+mobx)
  8. 接口测试系列:工作中所用(十:配置文件的读写操作 configparser模块)
  9. spark报错:invalid token
  10. JQuery之事件冒泡