用C编译数据流?

Posted

技术标签:

【中文标题】用C编译数据流?【英文标题】:compile a stream of data in C? 【发布时间】:2011-09-30 12:41:10 【问题描述】:

是否可以编译数据流而不是使用 gcc 编译 .c 文件?例如,是否可以直接编译代码,而不是将代码存储在任何xyz.c 文件中?

【问题讨论】:

如果没有提供文件,gcc 将不知道如何从流中创建目标文件,也不知道如何在源代码中引用函数。为什么不简单地将数据流式传输到文件中?另一种可能性是使用像 CINT 这样的解释器。 明白。不想把事情搞得这么复杂。不过谢谢:) 如果有人感兴趣,这也适用于 clang! 【参考方案1】:

您可以创建一个文件,将代码流式传输到其中,然后创建另一个进程(即编译器),将文件作为参数提供给它。然后创建另一个进程(即链接器),它将为您创建一个 exe。最后,您可以将该 exe 作为新进程启动。 但是为什么呢?!:)

【讨论】:

我正在开发一个项目-在线 c 编译器。我只是想知道,与其实际保存文件然后编译它,是否可以编译和运行它而不将其保存在文件中。 :) @Kazekage 我爱罗:不,我不认为你可以。 @Armen:你可以...看到my answer(当然生成的二进制文件仍然保存为文件)【参考方案2】:

This 可能会回答你的问题,尽管它很少有用。

【讨论】:

对不起,如果我不简单地写谢谢,但它太短了,所以想象一下我(每次)感谢你,也感谢你的反对:) 不用担心@Shin;你不需要感谢我(尽管我很感激)。下次您的答案只是一个链接时,将链接中的一些信息复制到 SO 本身:这样,读者无需单击链接即可看到答案的主要部分。如果他们想更深入地挖掘,可以单击链接并阅读其余部分。 感谢您的建议;我只是关心许可,现在读到这是带有署名的 cc-wiki,我想它与 rc 许可兼容。 只要您不过度复制/粘贴并清楚标明来源,我认为它属于“合理使用”规则。我刚才answered 一个基本上是源链接的问题:)【参考方案3】:

使用 gcc 选项 -x-

$ echo -e '#include \nmain()puts("Hello world");return 0;' | gcc -xc -ogarbage - && ./garbage && rm 垃圾 你好世界

上面的单行命令由以下几部分组成:

echo -e '#include \nmain()puts("Hello world");return 0;' # "source" | # 管道 gcc -xc -ogarbage - # 编译 && # 和 ./garbage # 运行 && # 和 rm垃圾#删除

【讨论】:

以上是关于用C编译数据流?的主要内容,如果未能解决你的问题,请参考以下文章

数据结构高手,或者C语言告诉,看看哪里错了,编译不过呀,显示有很多错误

如何用c读取文件

用c程序连接mysql数据库

C语言写的链表。明明没有错误,为啥编译器还会报错,?而且还爆出100+的错误,求解。

c语言数据结构中结构体定义问题

C语言中怎样实现打印宏?(例如#define BBBBBBB 100000,然后输入为100000的时候打印出BBBBBB。