【发布时间】:2018-07-25 02:11:09
【问题描述】:
我读过this link,我能理解它的意思。
如图所示,我有一个关于动态库的问题。
说我编写了一个 C++ 程序。据我了解,当我使用一些编译器,例如gcc 来编译我的程序(例如,g++ main.cpp)时,它是关于完成第 3 步和第 4 步的工作,这意味着它只是关于编译和链接静态库。
但是,众所周知,我们可以将-lXXX 或-LXXX 附加到g++ 以告诉它必要的动态库在哪里。据我了解,这是关于此图像中的第 5 步。
所以现在我很困惑。如果命令g++ 正在完成编译和链接静态库的工作,为什么我们可以并且应该给它动态库? (否则会有一些未定义的引用错误)
编译和链接时是否需要动态库?如果是这样,为什么这张图片告诉我们第 5 步是运行的一部分,而不是构建的一部分?
【问题讨论】:
-
动态库通常分为两部分:“字典”和实现。编译和链接需要“字典”,因为字典包含动态库中的函数声明。在某些平台上,库具有“dll”扩展名,字典具有“lib”扩展名;有时也可能有一个带有函数声明的头文件。字典还包含链接信息,例如函数在动态库中的位置。
标签: c++ dynamic makefile compilation