Компиляция с GCC в Windows 7: \ mingw32 \ bin \ ld.exe: не удается открыть выходной файл a.exe - PullRequest
3 голосов
/ 10 августа 2010

Это то, что я получаю при попытке скомпилировать простую программу hello world с помощью gcc.

c:\>gcc hello.c
hello.c:9:2: warning: no newline at end of file
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot open output file a.exe
: Permission denied
collect2: ld returned 1 exit status

Имеет ли это какое-то отношение к административным привилегиям Windows 7?файл создается, но не может быть открыт, где он находится?

Извините, если это слишком сложный вопрос.Я использовал Dev-C ++ для компиляции моего исходного кода до сих пор.Я попытался поискать ошибку, но все, что я смог найти, это файл, который уже открыт, но в диспетчере задач об этом нет упоминания.

Редактировать: Файл также находится в C: \ hello.c

Смогу ли я сделать это, если я помещу его на другой диск?

Когда я помещаю файл в D: \ и пытаюсь заменить его на любой другой диск, используя cd d: \ didnне меняйте диск.

Ответы [ 3 ]

6 голосов
/ 10 августа 2010

Да, это проблема с разрешениями, вы не должны запускать окно командной строки в режиме администратора.

Не работать в C: \

Скопировать файл в папку вмои документы, или подпапка C:, или другой диск.

Или, запустите консоль в режиме администратора, если вы действительно хотите работать в корне C:

Чтобы переключиться на D: в то время как в C: просто введите D: (вы используете CD только тогда, когда уже на правильном диске)

0 голосов
/ 31 июля 2017

Команда g ++. Exe в журнале сборки в IDB CodeBlocks показывает команду с дополнительным путем: C:\MinGW\lib, что неверно.

  1. Если вы копируете команду в cmd-окно (в каталоге вашего проекта) без C:\MinGW\lib компилятор работает. Когда вы копируете команду, как показано в CodeBlocks-Buil-log, она завершается неудачно с тем же сообщением в окне cmd.

  2. Посмотрите на Settings > Compiler > Search Directories > Linker. Вы должны удалить C:\MinGW\lib есть, но ошибка в том, что он не удаляется, если вы сделаете это один раз. Вы должны повторить это, и тогда это сработает.

0 голосов
/ 10 августа 2010

Наиболее распространенным случаем является то, что ваша программа все еще может работать в фоновом режиме, возможно, зависая в бесконечном цикле.Вы можете попробовать найти процесс в списке процессов (нажмите Alt + Ctrl + Del ) и убейте его.

...