【发布时间】:2013-07-16 04:40:16
【问题描述】:
我正在尝试使用您的标准 g++ 编译器编译一些 C++ 代码。 但是,而不是从文件编译:
main.cpp:
#include <iostream>
int main(){
std::cout << "Hello World!\n";
return 0;
}
我更愿意做类似的事情
g++ ... "#include <iostream>\n int main(){ std::cout << \"Hello World!\n\"; return 0;}"
之前来自 stackoverflow 的 post 表明
echo "int main(){}" | gcc -Wall -o testbinary -xc++ -
工作,但我想知道它是如何工作的,如果有办法做到这一点而不需要管道内容。
编辑:
我正在生成运行时代码,我需要生成一个共享库并加载创建的函数。
我以为会有一个标志告诉编译器“嘿,我给你的是源代码而不是文件”。
再次感谢您的帮助!
【问题讨论】:
-
我很好奇,您为什么要这样做,您要解决的问题是什么?
-
或者,您可以将所需的任何字符串通过管道传输到文件中,然后编译该文件:
echo "int main(){}" >> main.cpp; gcc main.cpp -Wall -o testbinary -
@ShafikYaghmour 我正在使用 g++ 进行一些 JIT 编译,并希望加载由此产生的共享库。
-
@Aggieboy 我了解管道的工作原理,但我不明白字符串 get 插入 g++ 命令的位置。如在,我怎样才能拥有与您放置的管道相同的功能而无需管道回声输出?另外,写入文件会在执行过程中减慢速度。
-
@Yuuta 您能否提供有关您正在使用的场景的更多详细信息,我不完全理解您以这种方式执行 JIT。对您正在尝试做的事情进行更好的解释可能会为您提供更好的方法。
标签: c++ compilation g++