进一步解释我的情况。我知道当您使用动态库时,您需要将库路径导出到 LD_LIBRARY_PATH,以便可执行文件在运行时能够找到这些库。如果我不这样做,就会出现错误,无法找到共享库。
现在,如果我添加以下链接器标志“-L/path/to/library/-lthelibrary.so”,我可以运行我的可执行文件,而无需将库路径导出到 LD_LIBRARY_PATH。
这是为什么?
最佳答案
首先,您通常不需要设置LD_LIBRARY_PATH
来运行二进制文件。加载程序使用此环境变量来查找其他位置来查找要在执行二进制文件时加载的.so
文件。
如果您的二进制文件引用的一个或多个 .so
文件在其所在位置不可用,则您需要设置LD_LIBRARY_PATH
被编译。如果任何直接引用的 .so
文件依赖于创建 .so
文件时不可用的内容,则也需要它。
使用ldd
命令检查二进制文件中的依赖关系信息,以便更清楚地了解创建二进制文件时链接器保存的内容。
关于c - 将库路径导出到 LD_LIBRARY_PATH 和在链接时使用 -L 标志有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215195/