将静态文件编译为可执行文件

时间:2012-02-07 18:23:46

标签: c compilation

假设我有一个创建数据库文件的程序,并从.sql文件向其导入数据。

如果我不想在我的目录中浮动一个随机.sql文件,有没有办法将这个静态文件编译成可执行文件而不必将其内容复制到C文件中的字符串中?也许是一个define语句?

3 个答案:

答案 0 :(得分:4)

使用xxd

$ xxd -i data.sql > data.sql.c

然后包含(或复制/粘贴)生成的c文件(不是标题)

您可以加入全球......

#include <stdlib.h>
#include "data.sql.c" /* global scope */

...或功能范围

int foo(void) {
#    include "data.sql.c" /* function scope */
}

答案 1 :(得分:2)

找到一个将任意二进制文件转换为目标文件的实用程序(例如Linux上的bin2obj)。然后,您只需将数据链接到您的exe,而无需将其转换为C源代码。

答案 2 :(得分:0)

您可以将SQL文件中的语句转换为字符串集(数组),将字符串放在源文件中并使用它构建应用程序。使用#define为数组中的索引创建名称。