在Linux中,导入库的等效方式
在Linux中没有"import libraries"的概念。这是因为Windows和Linux中的链接模型不同。在Linux中,每个库的公共符号都是被导出的,除非你使用可见性技巧;而在Windows中,情况并非如此,需要显式地导出符号。
C++11标准没有提到动态链接,这是一个实现细节。未来的C++20可能会引入模块的概念。
在Linux中,插件(plugins)由动态加载器(dynamic loader)加载和处理,与Windows上的处理方式有所不同。可以使用ld-linux、dlopen、dlsym和elf等工具来检查Linux上的ELF文件(目标文件、库文件、可执行文件)。此外,Linux是自由软件,可以下载和研究大部分组件的源代码。
Linux和Windows是非常不同的。不要期望在Linux中找到每个Windows功能的精确等价物。要以全新的眼光看待Linux,并充分利用Linux是自由软件的特点,考虑研究内核、binutils、GNU libc或musl-libc、GCC或Clang等组件的源代码。
关于问题中提到的导出符号需要显式声明的问题,可以使用__declspec(dllexport)来实现。在Windows中,DLL没有任何导出符号,如果单独链接对其进行链接是无用的,这就是为什么需要导入.lib文件的原因。
总之,Linux和Windows的链接模型不同,导致在Linux中没有"import libraries"的概念。要在Linux中加载和处理插件,需要使用动态加载器,并通过ELF文件来检查和分析。