即使它们存在,ld也找不到图书馆

问题描述:

编辑:修改:不会在这里工作,只在shell中,用'$ HOME'替换〜它应该可以工作,谢谢大家的回答。即使它们存在,ld也找不到图书馆

试图在这里编译一个项目,但它似乎无法找到库,即使它们存在,这里是我的线的输出和证明库存在。

[email protected] ~/Car $ g++ Car.cpp -I~/git/robidouille/raspicam_cv -L~/git/robidouille/raspicam_cv -lraspicamcv -L~/git/userland/build/lib -lmmal_core -lmmal -lmmal_util -lvcos -lbcm_host -I/usr/include/opencv -lopencv_highgui -lopencv_core -lopencv_video -lopencv_imgproc -lpthread -lm 
/usr/bin/ld: cannot find -lraspicamcv 
/usr/bin/ld: cannot find -lmmal_core 
/usr/bin/ld: cannot find -lmmal 
/usr/bin/ld: cannot find -lmmal_util 
/usr/bin/ld: cannot find -lvcos 
/usr/bin/ld: cannot find -lbcm_host 
collect2: ld returned 1 exit status 
[email protected] ~/Car $ find ~/ -name libraspicamcv.so 
/home/pi/git/robidouille/raspicam_cv/libraspicamcv.so 
[email protected] ~/Car $ find ~/ -name libmmal_core.so 
/home/pi/git/userland/build/lib/libmmal_core.so 
[email protected] ~/Car $ find ~/ -name libmmal.so 
/home/pi/git/userland/build/lib/libmmal.so 
[email protected] ~/Car $ 

编辑:试着做

ld -L~/git/userland/build/lib -lmmal_core --verbose 

,它给了我

attempt to open ~/git/userland/build/lib/libmmal_core.so failed 

但是〜/ git的/的userland /建设/ lib目录/ libmmal_core.so确实存在逸岸,所以对于一些它存在的原因似乎无法打开该文件。

+1

只是一个猜测,但我认为〜可能会导致问题 – RedAgito

将“〜”扩展到您的主目录是shell的一项功能,它不会在参数(如-I~/git/robidouille/raspicam_cv)的“内部”进行扩展。

当链接器去寻找库时,它不会问你的shell在哪里 - 它试图找到不存在的文字路径“〜/ git/robidouille/raspicam_cv”。

将“〜”替换为“$ HOME”,其中由shell展开。

+0

哦,工作,谢谢!不知道〜只是shell的一部分,并没有在参数内部工作。 – Matthew