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