我在C ++中构建一个使用sqlite3作为嵌入式数据库的应用程序。 sqlite3的源代码分发为合并的源代码文件sqlite3.c
和两个头文件。
将sqlite3代码直接链接到我的程序二进制代码与将sqlite3编译为静态库并以这种方式链接它有什么相对的优点或缺点?
我已经决定不将sqlite3代码作为动态库链接。
答案 0 :(得分:3)
这确实没什么区别 假设你有某种makefile环境,如果你没有改变任何东西,sqlite.c只会被构建一次,而链接器将以与插入静态库几乎相同的方式组合目标文件。
答案 1 :(得分:2)
静态库被编译到您的程序中。链接代码直接编译到您的程序中。所以看起来它实际上是一样的:)如果你把它作为静态库链接它可能会更容易管理项目,因为你将有更少的源文件。另一方面,如果您需要快速修改库源文件,则不需要重建静态库。最终取决于你。
答案 2 :(得分:0)
这是一种在库中包含sqlite3的方法,不包括库中的任何符号:
#define SQLITE_API static
#include <sqlite.h>
#include <sqlite.c>
然后保证不会与您图书馆用户可能链接的其他sqlite实现发生冲突。