jml*_*jml 1 c c++ shared-libraries static-libraries
我正在为项目编写构建系统,我不确定可执行文件,静态库和共享库之间的链接.
对我来说有三个肯定:
关于第三次肯定,我仍然怀疑......
你能告诉我这件事吗?
使用静态库基本上就像链接一个.o或一个.obj文件:所有实现都链接到特定时间点的使用应用程序或库.在此之后对静态库所做的更改将不会被链接它的代码自动拾取...后者需要重新链接才能合并更改.
共享库将链接推迟到运行时,这意味着每次使用共享库的代码调用其中的某些功能时,都会使用在运行时找到的共享库的版本.只要更改不影响公共API,您就可以替换共享库,并且在运行时找到它的应用程序将获取更新/更改,而无需自行修改/重新链接.
所以,是的,可执行文件可以使用两者,静态库可以使用两者,并且您的第三个"肯定"是错误的:共享库也可以使用它们.它只是意味着共享库本身可以使用静态库中的功能快照,或者它可以在运行时从另一个共享库中找到其他功能.