无需输入即可编译

时间:2015-11-22 17:57:40

标签: c gcc sh

我试图在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代码而不生成任何文件? 谢谢!

1 个答案:

答案 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