ld无法找到库文件,即使它们存在。

3

编辑:显然在这里无法使用“~”,只能在shell中使用,将“~”替换为“$HOME”,就可以使用了。感谢所有回答的人。

我正在尝试编译一个项目,但似乎找不到库,尽管它们存在,以下是我的输入行的输出和证明库的存在。

pi@raspberrypi ~/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
pi@raspberrypi ~/Car $ find ~/ -name libraspicamcv.so
/home/pi/git/robidouille/raspicam_cv/libraspicamcv.so
pi@raspberrypi ~/Car $ find ~/ -name libmmal_core.so
/home/pi/git/userland/build/lib/libmmal_core.so
pi@raspberrypi ~/Car $ find ~/ -name libmmal.so
/home/pi/git/userland/build/lib/libmmal.so
pi@raspberrypi ~/Car $

编辑:尝试执行

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

并且它给了我。
attempt to open ~/git/userland/build/lib/libmmal_core.so failed

但是 ~/git/userland/build/lib/libmmal_core.so 文件确实存在,所以出于某种原因它似乎无法在它的存在情况下打开这个文件。

1
只是猜测,但我认为~可能会引起问题。 - RedAgito
1个回答

5
将"~"扩展到您的主目录是shell的一项功能,并且它不会在参数内部(例如-I~/git/robidouille/raspicam_cv)扩展。
当链接器寻找库时,它不会询问您的shell它在哪里 - 它尝试找到字面路径"〜/ git / robidouille / raspicam_cv",但该路径不存在。
用"$HOME"代替"~",这将由shell扩展。

哦,那样行得通,谢谢!我不知道波浪符只是shell的一部分,在参数内无法使用。 - Matthew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接