Note: This article is available in Chinese only. 本文暂无英文版本。
View original
发现我对工程一无所知 QAQ。
参考资料:
Library Archives: Static and Dynamic
简单地说,.a 文件是静态库,而 .so 文件是共享对象(动态库),作用类似 Windows 下的 DLL。
.o 文件则相当于 Windows 下的 .obj 文件。编译器通常先把各个源文件编译为目标文件,再将它们链接成最终的可执行文件。
开发者可以选择生成静态库或动态库,不过需要根据程序的分发和运行方式做取舍。
静态链接的好处是,把程序交给用户后通常不需要再额外提供对应的动态库;代价是最终程序会比较臃肿。