在 Ubuntu (14.04) 中,是否有等同于 /etc/ld.so.conf.d 的链接器?
In Ubuntu (14.04), is there an equivalent to /etc/ld.so.conf.d for the linker?
这是一个关于位于中心的路径规范的问题,例如 PATH、LD_LIBRARY_PATH 和 LIBRARY_PATH。
我知道有两种方法可以为加载程序指定共享库路径:将它们添加到 LD_LIBRARY_PATH,或者将文件添加到 /etc/ld.so.conf.d/。我也知道后者被认为是更现代和更受欢迎的方式。
我还知道您可以通过编辑 LIBRARY_PATH 为 link 用户指定标准库路径。这仍然是 "modern" 的方法吗,还是现在有我应该使用的 "ld.so.conf.d-style" 替代方法?
编辑:人们在问 "why",所以:
我正在使用 Python 包 (Theano),它在 运行 时动态生成和编译 CUDA 和 C++ 代码。它 link 的库之一是 NVidia 的 cuDNN。我不知道为什么 Theano 的开发人员将它 link 到静态库而不是动态库。
没有任何等同于 ld.so.conf.d/
的静态库。您仍然只需通过 LIBRARY_PATH
环境变量指定标准链接器搜索路径,并通过命令行标志指定附加路径到链接器。
要明确:
- LIBRARY_PATH:编译时链接器使用。链接器使用它来查找静态库和动态库。
- LD_LIBRARY_PATH:加载程序在运行时使用它来查找动态库。
静态库在(静态)link 时间解析,根据定义没有任何运行时方面。
我的意见是你应该避免使用静态库,而总是喜欢共享库。
这是一个关于位于中心的路径规范的问题,例如 PATH、LD_LIBRARY_PATH 和 LIBRARY_PATH。
我知道有两种方法可以为加载程序指定共享库路径:将它们添加到 LD_LIBRARY_PATH,或者将文件添加到 /etc/ld.so.conf.d/。我也知道后者被认为是更现代和更受欢迎的方式。
我还知道您可以通过编辑 LIBRARY_PATH 为 link 用户指定标准库路径。这仍然是 "modern" 的方法吗,还是现在有我应该使用的 "ld.so.conf.d-style" 替代方法?
编辑:人们在问 "why",所以:
我正在使用 Python 包 (Theano),它在 运行 时动态生成和编译 CUDA 和 C++ 代码。它 link 的库之一是 NVidia 的 cuDNN。我不知道为什么 Theano 的开发人员将它 link 到静态库而不是动态库。
没有任何等同于 ld.so.conf.d/
的静态库。您仍然只需通过 LIBRARY_PATH
环境变量指定标准链接器搜索路径,并通过命令行标志指定附加路径到链接器。
要明确:
- LIBRARY_PATH:编译时链接器使用。链接器使用它来查找静态库和动态库。
- LD_LIBRARY_PATH:加载程序在运行时使用它来查找动态库。
静态库在(静态)link 时间解析,根据定义没有任何运行时方面。
我的意见是你应该避免使用静态库,而总是喜欢共享库。