首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Eclipse CDT C++ 編譯報 ld returned 1 exit status:可執行文件仍在運行導致無法覆蓋

     編輯:程式設計綜合問答

現象

首次編譯運行正常,再次編譯報錯:

error: ld returned 1 exit status

控制台提示:cannot open output file xxx.exe: Permission denied。

根本原因

  • 上一次運行的程序**未正常退出**(死循環、斷點卡住、輸入等待),進程仍佔用 `.exe` 文件句柄。
  • Windows 禁止修改正在運行的可執行文件,鏈接器無法寫入新二進制,拋出 ld 錯誤。

解決步驟

  1. 任務管理器 → 詳情 → 找到 `xxx.exe` → 結束任務。
  2. 或控制台按 Ctrl+C 強制終止前台進程。
  3. Eclipse Console 視圖紅色方形「Terminate」按鈕終止調試會話。
  4. 設置「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` 等)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved