为了账号安全,请及时绑定邮箱和手机立即绑定

LD_LIBRARY_PATH vs LIBRARY_PATH

LD_LIBRARY_PATH vs LIBRARY_PATH

LD_LIBRARY_PATH vs LIBRARY_PATH我正在构建一个简单的C ++程序,我想暂时用一个系统提供的共享库替换它的更新版本,以进行开发和测试。我尝试设置LD_LIBRARY_PATH变量,但链接器(ld)失败了:/ usr / bin / ld:找不到-lyaml-cpp我希望这可以工作,因为根据ld手册页:链接器使用以下搜索路径来查找所需的共享库:...对于本机链接器,环境变量“LD_LIBRARY_PATH”的内容...然后我尝试设置LIBRARY_PATH,这很有效。根据GCC手册:LIBRARY_PATH的值是以冒号分隔的目录列表,与PATH非常相似。当配置为本机编译器时,GCC会在搜索特殊链接器文件时尝试这样指定的目录,如果它无法使用GCC_EXEC_PREFIX找到它们。在使用-l选项搜索普通库时,使用GCC链接也会使用这些目录(但首先使用-L指定的目录)。正如(GCC)手册所示,LIBRARY_PATH可行,因为我与GCC链接。但..由于我与gcc链接为什么要调用ld,因为错误消息表明?让两个变量服务于同一目的有什么意义?还有其他差异吗?
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

LIBRARY_PATH gcc在编译之前用于搜索包含需要链接到程序的静态库和共享库的目录。

LD_LIBRARY_PATH在成功编译和链接后,程序将使用它来搜索包含共享库的目录。

编辑:如下所述,您的库可以是静态的或共享的。如果它是静态的,则将代码复制到程序中,并且在编译和链接程序后不需要搜索库。如果你的图书馆是共享的,那么它需要动态链接到你的程序,并且当LD_LIBRARY_PATH它发挥作用时。


查看完整回答
反对 回复 2019-08-24
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

LD_LIBRARY_PATH在程序启动时LIBRARY_PATH搜索,在链接时搜索。

来自评论的警告:


查看完整回答
反对 回复 2019-08-24
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

由于我与gcc链接为什么要调用ld,因为错误消息表明?

gcc在链接模式下内部调用ld。


查看完整回答
反对 回复 2019-08-24
  • 3 回答
  • 0 关注
  • 558 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信