Clang链接器不会查看LD_LIBRARY_PATH

Rég*_* B. 7 c++ cmake clang ld

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

ld然后抱怨以下消息:

/usr/bin/ld: cannot find -lmylib
Run Code Online (Sandbox Code Playgroud)

每当我手动添加时,上面的链接命令运行正常-L/my/dir/.有没有指定-L标志链接的方法?

tro*_*foe 7

$LD_LIBRARY_PATH环境变量(和其它基于UNIX的平台上的各种替代方案)用于在运行时,不链接时,发现库.

使用-L是正确的方法,无法避免.

注意:在Linux下更好的方法(你没有指定你的平台,所以我猜)是正确配置文件/etc/ld.so.conf.d/并避免$LD_LIBRARY_PATH完全使用.

  • @RégisB.`/ etc/ld.so.conf.d /`也只是*runtime*; 我提到它,因为它比使用`$ LD_LIBRARY_PATH`更好.它不会影响你的构建.为什么不在cmake配置中添加一个自定义变量,每个人都可以设置为在链接期间指定其他库(如果没有设置它不会做什么,也不会影响你的同事) (2认同)