ld 找不到库,即使它们存在
Posted
技术标签:
【中文标题】ld 找不到库,即使它们存在【英文标题】:ld cannot find libraries even though they exist 【发布时间】:2015-05-24 08:37:04 【问题描述】:编辑:显然 ~ 在这里不起作用,只能在 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】:扩展“~”到你的主目录是shell的一个特性,它不会在-I~/git/robidouille/raspicam_cv
这样的参数“内部”扩展。
当链接器去寻找库时,它不会询问你的 shell 它在哪里——它试图找到不存在的文字路径“~/git/robidouille/raspicam_cv”。
用“$HOME”替换“~”,它将被shell扩展。
【讨论】:
哦,成功了,谢谢!不知道 ~ 只是外壳的一部分,在参数内部不起作用。以上是关于ld 找不到库,即使它们存在的主要内容,如果未能解决你的问题,请参考以下文章
ld:在 Xcode 中找不到 -lFirebaseCore 的库反应原生