【发布时间】:2017-06-20 10:29:41
【问题描述】:
共享库 (.so) 文件是否需要在链接时呈现(或指定)?
我在这里 (Difference between shared objects (.so), static libraries (.a), and DLL's (.so)?) 读到 .so 文件必须在编译时存在,但根据我的经验,这不是真的吗?
共享库不只是在运行时使用dlopen 和dlsym 进行链接,因此当应用程序链接时,该库可能不存在于系统上?
【问题讨论】:
-
只要在这个网站上搜索“未定义参考”的问题,你就会发现有些情况是必要的。我认为大多数情况下,手动
dlopen是相当专业的用途。 -
什么时候需要什么时候不需要?
-
尝试编译一段不带
-ldl链接标志的调用dlopen的代码。共享库的正常使用“几乎总是”是必要的。 -
编译时间:否;链接时间:是的;运行时:是的。在某些平台(例如 AIX)上,您可以在链接时使用 import-files 而不是共享库。
标签: c++ dll shared-libraries