/usr/bin/ld:只有在库版本很少时才找不到(我认为)

/usr/bin/ld: cannot find happens only when the library has few versions (i think)

本文关键字:找不到 版本 ld bin usr      更新时间:2023-10-16

我正在尝试为c ++项目链接eclipse中的opencv库。
当我链接文件夹中有一个实例的库时,它似乎可以识别它,但无法识别库何时实例很少(也许术语实例不是那么准确,我不太确定这些不同版本的库的含义是什么(。
因此,正如我在其他问题中看到的那样,该问题似乎与滥用 lib 或错误路径无关。

这是我在构建项目时得到的:

12:33:17 **** Incremental Build of configuration Debug for project Test2 ****    
make all     
Building target: Test2    
Invoking: GCC C++ Linker    
g++ -L/usr/local/Matlab/2013b/bin/glnxa64 -o "Test2"  ./BilateralFilter.o ./main.o ./stdafx.o   -lopencv_core -lmwvision_res -lmwvision -lopencv_imgproc -lopencv_highgui    
/usr/bin/ld: cannot find -lopencv_core    
/usr/bin/ld: cannot find -lopencv_imgproc    
/usr/bin/ld: cannot find -lopencv_highgui    
collect2: error: ld returned 1 exit status    
make: *** [Test2] Error 1    

如您所见,MWvision似乎没有问题,但其他有问题,我认为这与它们存在于目录中的多个版本中有关(但也许我错了(。
opencv_coreopencv_imgprocopencv_highgui 都有 .so.2.4.so.2.4.2 版本。

不幸的是,这两个链接没有提供答案:
ld 链接问题:/usr/bin/ld: 找不到 [库名称]

/

usr/bin/ld:找不到共享库

我还要提到我在 Matlab 中没有用处,它只是我找到 opencv 库的地方。

opencv_core、opencv_imgproc 和 opencv_highgui 都有 .so.2.4 和 .so.2.4.2 版本。

如果您阅读了外部库版本控制的描述,您将了解.so.2.4是库的运行时名称,而不是其链接时名称。

为了链接,您需要.so(不带版本后缀(。

拥有.so.2.4但不.so通常发生在您拥有例如 libopencv-core软件包已安装,但未libopencv-core-dev 。解决方案是安装后者。

相关文章: