将库路径导出到LD_LIBRARY_PATH并在链接时使用-L标志有什么区别?

时间:2012-08-31 12:16:16

标签: c linker shared-libraries

进一步解释我的情况。我知道当您使用动态库时,需要将库路径导出到LD_LIBRARY_PATH,以便可执行文件在它们运行时找到库。如果我不这样做,则会出现错误,无法找到共享库。

现在,如果我将以下链接器标志" -L / path /添加到/ library / -lthelibrary.so",我可以运行我的可执行文件而不将库路径导出到LD_LIBRARY_PATH。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

首先,您通常需要来设置LD_LIBRARY_PATH来运行二进制文件。加载程序使用此环境变量来查找其他位置,以查找要在执行二进制文件时加载的.so文件。

如果您的二进制文件引用了与编译时相同位置不可用的一个或多个LD_LIBRARY_PATH文件,则 需要设置.so。如果任何直接引用的.so文件依赖于与创建.so文件时不同的内容,也需要它。

使用ldd命令检查二进制文件中的依赖关系信息,以便更清楚地了解创建二进制文件时链接程序保存的内容。