题
我要建一个简单的C++的程序,我想暂时代替一个系统提供的共用图书馆的更新版本,为开发和测试。
我试图设置的LD_LIBRARY_PATH变量,但连接(ld)未能有:
/usr/bin/ld:找不到-lyaml-cpp
我预期这一工作,因为根据ld人页:
连接使用下面搜索 路径查找需要共享 图书馆:...对于一个本地连接体, 内容的环境变量 "LD_LIBRARY_PATH"...
然后我试图设置的LIBRARY_PATH,工作。
根据海湾合作委员会成员手册:
值 LIBRARY_PATH是一个结肠-分开列表 目录,很像的道路。时 配置为一个母编译器,海湾合作委员会 试图的目录,因此指定 当寻找别的接头 文件的,如果它找不到他们使用 GCC_EXEC_PREFIX.联海湾合作委员会使用 还利用这些目录的时候 在寻找普通图书馆 -l选项(但是目录 指定了-我先来).
作为(海合会)的手册表明,LIBRARY_PATH工作,因为我的链接。
但是..
- 因为我的链接,与海湾合作委员会为什么ld是 被称,作为错误信息 建议?
- 有什么点 具有两个变量提供服务相同 目的是什么?是否有任何其他的 差异?
解决方案
LIBRARY_PATH
用于通过海湾合作委员会之前汇编搜索目录,包含静态和共享图书馆,需要链接到你的节目。
LD_LIBRARY_PATH
是用的你的计划搜索目录,含有 共享 图书馆后,已成功地编制和链接。
编辑:正如下面,你的图书馆可以是静态的或者共享。如果它是静态的,那么代码复制到你的程序和你不需要搜索的库之后你的节目编制及相联系。如果你的图书馆共享,然后需要将它的动态链接到你的节目,这时候 LD_LIBRARY_PATH
来发挥作用。
其他提示
LD_LIBRARY_PATH
是搜查程序启动时 LIBRARY_PATH
是搜索的链接时间。
警告从 评论意见:
- 当联图书馆
ld
(而不是的gcc
或g++
),LIBRARY_PATH
或LD_LIBRARY_PATH
环境变量不读。 - 当联图书馆
gcc
或g++
, ,LIBRARY_PATH
环境变量读(见 文件"gcc
使用这些目录搜索时,对普通图书馆").
因为我的链接,与海湾合作委员会为什么ld是被称,作为错误信息表明?
海湾合作委员会呼吁ld境内时,它是在联模式。