我正在尝试使用clang(3.0)构建和链接C ++,基于cmake的项目。此项目链接到安装在自定义目录/ my / dir /中的多个库。该目录包含在LD_LIBRARY_PATH和LIBRARY_PATH环境变量中。项目使用g ++构建和链接。
cmake生成并执行的链接命令如下所示:
/usr/bin/clang++ -O3 stuff.cpp.o -o stuff -rdynamic -lmylib
然后抱怨以下消息:
/usr/bin/ld: cannot find -lmylib
每当我手动添加-L/my/dir/
时,上面的链接命令就可以正常运行。有没有指定-L
标志的链接方式?
答案 0 :(得分:7)
在运行时而不是链接时间中使用$LD_LIBRARY_PATH
环境变量(及其在其他基于UNIX的平台上的各种替代方案)来查找库。
使用-L
是正确的方法,无法避免。
注意:在Linux下更好的方法(您没有指定平台,所以我猜)是在/etc/ld.so.conf.d/
中正确配置文件,并避免完全使用$LD_LIBRARY_PATH
。