gcc报错:-E or -x required when input is from standard input含义及解决方法
GCC错误“-E or -x required when input is from standard input”解析与解决
错误含义
这个错误的核心原因是:当你用-作为GCC的输入源时,GCC会从标准输入读取代码内容,但此时它没法像处理本地.c文件那样,通过文件名后缀判断输入代码的语言类型,因此要求你必须明确给出处理规则——要么用-E选项仅执行预处理(默认按C代码处理),要么用-x <language>参数指定输入代码的语言。
解决方法
根据你的实际需求分两种情况处理:
情况1:误输入了-,只想编译本地文件
你执行的命令gcc - ex_1.c ex c存在输入错误,应该是想编译ex_1.c和ex.c这类本地源文件。直接删掉命令里的-,执行正确的编译命令即可:
# 编译ex_1.c和ex.c,生成指定名称的可执行文件 gcc ex_1.c ex.c -o output
如果不需要指定输出文件名,直接执行gcc ex_1.c ex.c,默认会生成名为a.out的可执行文件。
情况2:确实需要从标准输入读取代码
如果你是要通过管道、手动输入等方式从标准输入提供代码,同时可能结合本地文件编译,就必须用-x明确指定语言类型(比如C语言用-x c):
# 从标准输入读C代码,同时编译ex_1.c,生成可执行文件output gcc -x c - ex_1.c -o output
如果只是想对标准输入的代码做预处理操作,可以用-E选项:
# 对标准输入的C代码执行预处理并输出结果 gcc -E - ex_1.c
内容的提问来源于stack exchange,提问作者Alex M
相关产品推荐
相关产品推荐

