I'm trying to compile some C++ code using your standard g++ compiler. However, rather than compiling from a file:
main.cpp:
#include <iostream>
int main(){
std::cout << "Hello World!\n";
return 0;
}
I would prefer to do something like
g++ ... "#include <iostream>\n int main(){ std::cout << \"Hello World!\n\"; return 0;}"
A previous post from stackoverflow showed that
echo "int main(){}" | gcc -Wall -o testbinary -xc++ -
works but I would like to know how it works and better yet, if there is a way to do this without the need to pipe the contents.
EDIT:
I'm doing run-time code generation where I need to generate a shared library and load the functions created.
I thought there would be a flag to tell the compiler "hey, I'm giving you the source code and not the file".
Thanks again for the help!
echo "int main(){}" | gcc -Wall -o testbinary -xc++ -
works but I would like to know how it works and better yet, if there is a way to do this without the need to pipe the contents.
Alternatively you can say (e.g. in a shell-script):
gcc -Wall -o testbinary -xc++ - << EOF
int main(){}
EOF
The compiler reads from an input source - either the stdin
or a file supplied. You need a pipe to supply something from elsewhere to the compiler. There is no other choice (and of course, some compilers may not have an option to read from stdin
either)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With