静态/动态库与.so库?

时间:2011-06-10 16:00:33

标签: c visual-studio gcc dll

我来自一个带有视觉工作室背景的Windows用于本机开发,我现在要编译用于android的本机代码。

我不确定类似unix的库(.so?)是如何工作的。它们是静态的(如Windows上的.lib)还是像DLL一样动态加载? 例如,在visual studio中,我将.lib文件添加到我的项目中进行编译,然后在运行时加载.dll。 unix-stuff中的等价物是什么,比如使用GCC?

谢谢!

3 个答案:

答案 0 :(得分:3)

在Linux上,.so文件是Windows上.dll文件的等效文件(*),因为它们在执行时动态加载到可执行文件中。但请注意,链接应用程序时不需要.lib文件。链接器将直接在.so文件中找到信息。

*:存在差异。

答案 1 :(得分:1)

首先,您应该阅读Static, Shared Dynamic and Loadable Linux Libraries上的页面。

这应该澄清你的几个问题。该页面包含对初学者有用的源代码示例。

另一个有趣的参考是Writing DLLs for Linux apps

答案 2 :(得分:0)

Linux上的.so文件与Windows上的.dll和Mac OSX上的.dylib相同。