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

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

为什么是这样?

最佳答案

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

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

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

关于c - 将库路径导出到LD_LIBRARY_PATH和在链接时使用-L标志有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12215195/

10-11 19:41
查看更多