任何人都知道如何解决“错误”;collect2.exe:错误:ld返回1退出状态“;C语言中的程序何时运行?

任何人都知道如何解决“错误”;collect2.exe:错误:ld返回1退出状态“;C语言中的程序何时运行?,c,ide,sublimetext3,C,Ide,Sublimetext3,首先,我是计算机科学的第一年,所以我还是编程的初学者,那么请原谅我知识的缺乏。好吧,我的问题基本上是一个错误,每当我尝试运行(通过使用升华文本的方式)C语言程序时,屏幕上都会显示这个错误。在这种情况下,是一个简单的代码: #include <stdio.h> int main() { //print the heading of the game printf("*****************************************\n");

首先,我是计算机科学的第一年,所以我还是编程的初学者,那么请原谅我知识的缺乏。好吧,我的问题基本上是一个错误,每当我尝试运行(通过使用升华文本的方式)C语言程序时,屏幕上都会显示这个错误。在这种情况下,是一个简单的代码:

#include <stdio.h>
int main() {    
    //print the heading of the game
    printf("*****************************************\n");
    printf("* Wellcome to the our guessing game *\n");
    printf("*****************************************\n");
    int secretnumber =  42;
    int guess;

    printf("What is your guess?");
    scanf("%d", &guess);
    printf("Your guess was %d \n", guess);
}
#包括
int main(){
//打印游戏的标题
printf(“************************************************************\n”);
printf(“*欢迎参加我们的猜谜游戏*\n”);
printf(“************************************************************\n”);
int secretnumber=42;
智力猜测;
printf(“你猜怎么着?”);
scanf(“%d”,猜测(&guess);
printf(“您的猜测是%d\n”,猜测);
}
输出: c:/mingw/bin/./lib/gcc/mingw32/8.2.0/../../../../../../../mingw32/bin/ld.exe:无法打开输出文件Olamundo.exe:权限被拒绝 collect2.exe:错误:ld返回了1个退出状态 [以0.3秒完成]


你知道,我尝试了一些解决方案,比如移动可执行文件所在的文件夹并将其放在根目录中(在我的例子中是Mateus(C:)),授予文件夹的所有权限,关闭防病毒软件(在我的例子中我只使用Windows defender),使用任务管理器完成任务,但没有任何效果。请帮帮我,我真的不知道还能做什么

总的来说,你的问题是你试图运行一个在Sublime内部交互的程序;它不支持这一点。升华捕获程序发送到
stdout
stderr
的输出,并将其显示在输出面板中,但它不会将面板连接到
stdin

因此,您遇到的场景是这样的:

  • 您运行的程序是交互式的(在您的情况下,它会通过
    scanf()
    提示输入),然后启动并提示您输入

  • 您试图输入输入,但由于未连接
    stdin
    ,因此没有任何结果

  • 您尝试再次运行您的程序(或者修改它并重新构建它,认为您可能有问题)

  • 您以前尝试运行的版本仍在后台运行,等待无法提供的输入,并且windows会在程序运行时锁定可执行文件。因此,当链接器(
    collect2
    )在生成过程中尝试链接可执行文件时,它无法链接,因为文件已锁定,因此会出现权限错误

  • 您可以通过终止后台运行的程序来清除错误,如果在错误发生之前执行此操作,则可以通过
    工具>取消生成
    执行此操作;如果您已经看到错误,则此操作可能不起作用,因为这只会取消最新的生成,而最新的生成可能就是发生错误的生成

    您可以做的另一件事是使用外部的东西来杀死它;windows上的任务管理器,
    kill
    来自Linux/OSX上的终端,等等。如果您已经看到错误,您需要这样做

    但是请注意,这并不能解决您的根本问题,因为您仍在尝试运行一个交互式程序。为了从Sublime中执行此操作,您需要创建一个自定义的
    Sublime构建
    ,以实现此目的。通常,您可以让它生成一个外部终端并在其中运行程序,或者使用类似于如果你想保持它的内部

    为了进行设置,您需要熟悉在一个命令中编译、链接和运行程序所需的命令序列,您可以通过检查当前使用的构建系统(假设您自己没有创建)来获得这些命令


    这段视频(免责声明,我是作者)提供了一些信息和示例,如果您想了解更多信息,Terminus可以用于类似的事情。

    您的问题在于构建(编译和链接)程序。不包括运行它-因为编译和链接过程必须成功创建可执行文件,然后才能运行可执行文件。collect2是链接阶段运行的程序之一。在任何情况下,请描述该命令(或多个命令)。如果使用多个命令您正在使用它来构建程序。这就是问题所在。1.尝试在您计划用于可执行文件的文件夹中创建一个新文件。--2.尝试在SublimiteText之外构建您的程序。--3.检查Sublimite Text中它认为应该构建可执行文件的选项。