首次编写C代码执行gcc命令时,出现输入输出文件相同错误求助
解决C语言编译错误:输入文件与输出文件相同
你的代码
#include <stdio.h> // This is my first time! int main(int argc, char const *argv[]) { printf("Hello World\n"); return 0; }
你遇到的错误
PS C:\C> gcc .\main2.c PS C:\C> gcc .\a.exe C:/Program Files/…/ld.exe: 输入文件'./\a.exe'与输出文件相同 collect2.exe: error: ld returned 1 exit status PS C:\C>
错误原因
你两次使用gcc命令的逻辑有误:
- 第一次
gcc .\main2.c是正确操作,它会把main2.c编译链接成默认可执行文件a.exe。 - 第二次
gcc .\a.exe完全错误,gcc会把a.exe当作待处理的输入文件,而它默认的输出文件也是a.exe,这就引发了输入输出文件重名的冲突,导致链接器报错。
正确操作步骤
- 编译代码:执行
gcc .\main2.c生成a.exe(这一步你已经完成)。 - 运行程序:在PowerShell里直接执行
.\a.exe,而不是用gcc处理已生成的可执行文件。
执行.\a.exe后,就能看到预期输出:Hello World。
额外技巧
如果想给生成的可执行文件自定义名称,可使用-o参数:
gcc .\main2.c -o my_first_c_program.exe
之后运行.\my_first_c_program.exe即可。
内容的提问来源于stack exchange,提问作者Piku
相关产品推荐
相关产品推荐

