3

我正在用 C++ 构建一个使用 sqlite3 作为嵌入式数据库的应用程序。sqlite3 的源代码作为一个合并的源代码文件sqlite3.c和两个头文件分发。

将 sqlite3 代码直接链接到我的程序二进制文件与将 sqlite3 编译为静态库并以这种方式链接它的相对优点或缺点是什么?

我已经决定不将 sqlite3 代码作为动态库链接。

4

3 回答 3

4

它真的没有太大的区别。
假设您有某种 makefile 环境,如果您不更改任何内容,则 sqlite.c 只会构建一次,并且链接器将以与插入静态库几乎相同的方式组合目标文件。

于 2009-08-26T03:14:36.953 回答
2

静态库被编译到你的程序中。链接代码直接编译到您的程序中。所以看起来它实际上是同一件事:) 如果您将项目链接为静态库,则管理项目可能会更容易,因为您将拥有更少的源文件。另一方面,如果您需要对库源文件进行快速修改,则不需要重建静态库。最终取决于你。

于 2009-08-26T03:14:46.127 回答
1

这是一种在库中包含 sqlite3 的方法,而不在库中包含任何符号:

#define SQLITE_API static
#include <sqlite.h>
#include <sqlite.c>

然后,您可以保证不会与您的库用户可能链接的其他 sqlite 实现发生冲突。

于 2015-04-29T18:29:11.783 回答