首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相当于Linux中的导入库

相当于Linux中的导入库
EN

Stack Overflow用户
提问于 2018-12-09 10:18:16
回答 2查看 4.3K关注 0票数 10

在Windows中,当要链接到C++时,必须提供导入库。但是在GNU系统中,当您想要链接到.so文件(相当于dll )时,您不需要。为什么呢?是否存在与Windows导入库相当的内容。

注意:我没有谈到在Windows中使用GNU C++的情况,在这种情况下,您还必须使用导入库。分裂线在Windows C++和Linux C++之间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-09 10:31:00

和Linux中,链接模型是不同的。阅读Levine的书http://iecc.com/linkers/ (on,每个公共符号 of a 图书馆 )。

C++11标准(读取n3337)没有提到动态链接。这是一个实现细节。

未来的C++20可能会有模块

Linux.中没有“导入库”。

要了解更多细节,请注意名称残缺是不同的。也请阅读https://tldp.org/HOWTO/Program-Library-HOWTO/,Drepper的https://www.akkadia.org/drepper/dsohowto.pdf

在Linux上,插件动态装载机加载(并且处理方式与动态装载机不同)。见linux(8)dlopen(3)dlsym(3)精灵(5)

在Linux上检查小精灵文件(目标文件objdump(1)以及可读性(1)nm(1) )。

另见C++ dlopen迷你指南。还可以阅读有关可见性函数属性的内容。另见问题。

相当于dll的.so文件。

Linux 共享对象 (小精灵 .so文件)并不完全等同于DLL。阅读上面给出的参考资料。

我还建议您阅读http://pages.cs.wisc.edu/%7Eremzi/OSTEP/和旧http://www.makelinux.net/alp/ (两者都可以免费下载)。稍后阅读系统(2)和从中引用的页面。

还请注意,Linux是自由软件,因此您可以下载并研究其大多数组件的源代码。

PS。Linux和Windows是非常不同的。不要期望在Linux中找到与每个Windows功能完全相同的内容。用全新的眼光看待Linux。利用Linux是由自由软件构成的,并考虑研究源代码,例如内核https://sourceware.org/binutils/、GNU libcmusl-libc (都提供了一些ld-linux.solibc.so,所以是C标准库)、< code >C49或嘎吱声 (它们都提供了c51上面的libc.so)。

票数 17
EN

Stack Overflow用户

发布于 2019-01-24 11:28:48

为了补充Basile的答案,您可能偶尔需要在Linux上导入库来模拟共享库的延迟加载 (例如,如果您的应用程序很少需要这个库,并且不想在它上浪费资源)。

这种模拟导入库将由一堆包装器组成,这些包装器在内部调用dlopendlsym,然后在共享库中实现。它们可以通过项目特定的脚本或通用工具Implib.so手动实现。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53691295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档