Ubuntu下gcc编译报错:输入输出文件相同,求原因及解决方法
解决gcc编译错误:input file与output file同名问题
错误原因
你执行的gcc编译命令中,输入源文件名和指定的输出可执行文件名完全相同。gcc会阻止这种操作:编译过程需要生成临时文件并写入输出内容,同名会引发文件读写冲突,甚至直接覆盖你的源文件。
比如你可能执行了类似这样的错误命令:
gcc expthread -o expthread
这里输入文件是expthread,输出文件也指定为expthread,触发了gcc的同名检测机制。
修复步骤
根据你的实际场景选择对应方法:
场景1:源文件未加后缀(比如直接命名为expthread)
C语言源文件通常需要.c后缀来让gcc识别为C代码,同时避免和输出可执行文件重名:
- 重命名源文件:
mv expthread expthread.c
- 执行正确的编译命令(输入为
expthread.c,输出为expthread,二者不同):
gcc expthread.c -o expthread
场景2:已使用正确后缀但错误指定了输出名
如果你的源文件是expthread.c,但不小心写成了gcc expthread.c -o expthread.c这类命令,只需修改输出文件名即可:
- 指定不同的输出名:
gcc expthread.c -o expthread_out
- 或使用默认输出(gcc默认生成名为
a.out的可执行文件):
gcc expthread.c
额外提醒
如果错误命令已经导致源文件内容损坏,先检查expthread或expthread.c的内容是否完整,必要时重新编写代码。
内容的提问来源于stack exchange,提问作者이건웅
相关产品推荐
相关产品推荐

