You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助解决collect2.exe: error: ld returned 1 exit status编译错误

编译C代码时遇到Permission Denied错误的解决

问题代码

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int size, i ,j, values[3][3];
    setbuf(stdout,NULL);
    printf("Please enter the array limit
");
    scanf("%d",&size);
    printf("The entered values of array");
    for(i=0; i<size; i++){
        for(j=0; j<size; j++){
        scanf("%d",&values[i][j]);
        }
    }
    printf("The entered values in matrix
");
        for(i=0; i<size; i++){
            for(j=0; j<size; j++){
            printf("%d",values[i][j]);
            }
        }

    return EXIT_SUCCESS;
}

编译错误信息

20:42:57 **** Incremental Build of configuration Debug for project Func multi Dim  Practice ****
Info: Internal Builder is used for build
gcc -o "Func multi Dim  Practice.exe" "src\Func multi Dim  Practice.o" 
C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file Func multi Dim  Practice.exe: Permission denied
collect2.exe: error: ld returned 1 exit status

核心原因

链接器ld.exe无法写入输出的可执行文件,提示权限被拒绝,通常是文件被占用、权限不足或路径解析问题导致。

解决步骤

  • 关闭后台运行的程序实例:打开任务管理器,找到Func multi Dim Practice.exe进程并结束,重新编译。
  • 检查输出文件夹权限:确保项目所在文件夹允许当前用户写入,右键文件夹→属性→安全选项卡,确认修改权限已启用。
  • 移除文件名中的空格:将项目名和输出文件名改为无空格格式(如FuncMultiDimPractice),避免路径解析错误。
  • 清理旧编译文件:手动删除项目目录下的.exe和.o文件,重新执行编译。
  • 以管理员身份运行IDE:如果项目存放在系统保护目录(如C:\Program Files),右键IDE选择“以管理员身份运行”后再编译。

额外代码优化提示

  1. 字符串换行问题:代码中printf的字符串直接换行会导致编译警告,应使用\n实现换行,例如printf("Please enter the array limit\n");。
  2. 数组越界风险:values是固定的3x3数组,若输入的size大于3会触发数组越界,建议添加范围判断,或使用malloc动态分配二维数组。

内容的提问来源于stack exchange,提问作者Ashwini Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:05:53