你在静态库中需要什么?

时间:2012-02-22 04:16:44

标签: static-libraries

我想尝试制作一个简单的游戏引擎。只是处理状态,资产,角色/演员及其统计数据和库存的东西。我可以从我写过的其他游戏中获取大部分代码,但是我对如何将其转换为静态库感到困惑。我需要一个main.cpp吗?如果是这样的话呢?在Linux下我猜我把它编译成.so并将标题添加到我的include目录然后只链接到.so但是我在Windows和Mac上做什么?

1 个答案:

答案 0 :(得分:1)

.so不是静态库,它是动态库。静态库最简单的是从单个C文件编译的.o文件,或.a文件,它只是.o文件的集合。

静态库与共享库的不同之处在于,目标代码直接链接到最终的可执行文件,在运行时不需要依赖项。

在Unix下,ar(1)命令用于将.o文件捆绑到复合.a文件中。我不知道Windows的可比实用程序。

获得.a文件后,您只需要.a文件和.h文件的组合来构建代码。您使用.h文件进行编译,然后链接到.a文件。

共享库比静态库具有特定优势,因为如果您有多个但不同的程序依赖于相同的库,则共享库中的代码可以同时在所有程序之间共享,因此,这意味着他们降低了对系统的整体影响。它们的缺点是启动时间较慢(尽管现在这种情况非常微不足道)。静态链接库不能在独立程序之间共享,但如果多次运行相同的可执行文件,则会共享其代码。