无输入编译
Compile without input
我正在尝试在 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 代码?
谢谢!
你可以做到: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 可执行文件文件。部分原因是 OS 需要嵌入式 ELF 加载器(例如 /lib64/ld-linux-x86-64.so.2
)来知道如何加载可执行文件。
我已经多次执行 "script creates C executable from source",我只是创建 .c 和可执行文件,然后再执行 rm
。我在 perl
中执行此操作,其中 C 文本出现在 __DATA__
之后,我执行 unlink
函数调用而不是 rm
我正在尝试在 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 代码?
谢谢!
你可以做到: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 可执行文件文件。部分原因是 OS 需要嵌入式 ELF 加载器(例如 /lib64/ld-linux-x86-64.so.2
)来知道如何加载可执行文件。
我已经多次执行 "script creates C executable from source",我只是创建 .c 和可执行文件,然后再执行 rm
。我在 perl
中执行此操作,其中 C 文本出现在 __DATA__
之后,我执行 unlink
函数调用而不是 rm