0

这是关于位于中心的路径规范的问题,例如 PATH、LD_LIBRARY_PATH 和 LIBRARY_PATH。

我知道有两种方法可以为加载器指定共享库路径:将它们添加到 LD_LIBRARY_PATH,或者将文件添加到 /etc/ld.so.conf.d/。我也知道后者被认为是更现代和更受欢迎的方式。

我也知道您可以通过编辑 LIBRARY_PATH 为链接器指定标准库路径。这仍然是“现代”的方式吗,还是现在我应该使用“ld.so.conf.d-style”替代方案?

编辑:人们在问“为什么”,所以:

我正在使用一个 Python 包 (Theano),它在运行时动态生成和编译 CUDA 和 C++ 代码。它链接到的库之一是 NVidia 的 cuDNN。我不知道为什么 Theano 的开发人员将它链接到静态库而不是动态库。

4

2 回答 2

2

静态库没有任何等价物ld.so.conf.d/。您仍然只需通过LIBRARY_PATH环境变量指定标准链接器搜索路径,并通过命令行标志指定链接器的附加路径。

要清楚:

  • LIBRARY_PATH:由链接器在编译时使用。链接器使用它来查找静态和动态库。
  • LD_LIBRARY_PATH:加载器在运行时用于查找动态库。
于 2015-03-19T19:45:13.510 回答
0

静态库在(静态)链接时解析,并且根据定义没有任何运行时方面。

我的观点是你应该避免使用静态库,并且总是更喜欢共享库。

于 2015-03-19T19:48:30.050 回答