我应该将sqlite3链接为普通目标代码还是作为C ++应用程序中的静态库?

时间:2009-08-26 03:02:35

标签: c++ sqlite static-libraries

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

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

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

3 个答案:

答案 0 :(得分:3)

这确实没什么区别 假设你有某种makefile环境,如果你没有改变任何东西,sqlite.c只会被构建一次,而链接器将以与插入静态库几乎相同的方式组合目标文件。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

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