我试图在shell脚本中使用 GCC ,但我想不使用输入文件,而是使用包含我的代码的变量。
现在我做:
echo '
#include <stdio.h>
int main(){
int a=1,b;
printf("Donnez un nombre : ");
scanf("%d", &b);
a+=b;
printf("test%d\n",a );
return 0;
}
' > .temp.c
#Entrez le texte ici
gcc .temp.c -o .ex -std=c99
我可以执行gcc $inputCode -o executable
之类的事情吗?
此外,如果有人知道我是否可以执行此c代码而不生成任何文件?
谢谢!
答案 0 :(得分:3)
你可以这样做:echo whatever | gcc -x c -o .ex -
但我认为这不值得。
替代方案可能更清晰[您没有\"
或\'
]。请注意,trap
示例可能不完全正确,但可能是您要尝试实现的目标。
cat << EOF | gcc -x c -o .ex -
int
main(void)
{
return 'a';
}
EOF
trap "rm -f .ex" SIGINT
.ex
rm -f .ex
但是,你仍然必须创建输出ELF可执行文件文件。部分原因是操作系统需要嵌入式ELF加载程序(例如/lib64/ld-linux-x86-64.so.2
)才能知道如何加载可执行文件。
我已经完成了“脚本从源创建C可执行文件”多次,我只创建了.c和可执行文件,之后只做了rm
。我在perl
中执行此操作,其中C文本显示在__DATA__
之后,我执行了unlink
函数调用,而不是rm