現象
首次編譯運行正常,再次編譯報錯:
error: ld returned 1 exit status
控制台提示:cannot open output file xxx.exe: Permission denied。
根本原因
- 上一次運行的程序**未正常退出**(死循環、斷點卡住、輸入等待),進程仍佔用 `.exe` 文件句柄。
- Windows 禁止修改正在運行的可執行文件,鏈接器無法寫入新二進制,拋出 ld 錯誤。
解決步驟
- 任務管理器 → 詳情 → 找到 `xxx.exe` → 結束任務。
- 或控制台按 Ctrl+C 強制終止前台進程。
- Eclipse Console 視圖紅色方形「Terminate」按鈕終止調試會話。
- 設置「Run/Debug → Launching → Launch Operation: Terminate and Relaunch」自動終舊啟新。
代碼層面預防
- 確保 `main` 有明確 `return 0;`。
- 避免無限循環無退出條件(如 `while(1)` 無 `break`)。
- 調試時用斷點而非 `system("pause")`,調試結束自動釋放進程。
補充:返回值含義
`ld returned 1 exit status` 是鏈接器 `ld` 的退出碼,1 表示通用錯誤。具體原因看前幾行輸出(如 `Permission denied`、`undefined reference` 等)。