Использование Cygwin для компиляции программы на C; Ошибка выполнения

Я участвую в курсе магистра компьютерных наук. Курс использует C, и инструктор хочет, чтобы мы использовали Cygwin для компиляции программ, если мы используем окна.

Я загрузил и установил Cygwin, и я убедился, что я установил Компилятор GCC.

Но я не знаю, куда идти отсюда. Мне нужно скомпилировать один исходный файл с базовым включением.

#include <stdio.h> 

Предположим, что файл находится на моем рабочем столе (это не так, а ради аргумента). Как перейти к рабочему столу из оболочки bash? Я предполагаю, что после того, как я переместился в нужное место в bash, я просто выполнил:

gcc myProgram.c -o myProgram

Обновление. Следуя различным инструкциям, опубликованным ниже, я смог скомпилировать программу; Я благодарю вас за это. Но когда я выполняю результирующий двоичный файл, я получаю следующее. Как я могу скомпилировать или выполнить эту программу, чтобы не получить ошибку? Еще раз спасибо.

This application has failed to start because cygwin1.dll was not found. Re-installing the application may fix this problem.

Ответы

Ответ 1

когда вы начинаете с cygwin, вы находитесь в своем $HOME, как обычно в unix, который по умолчанию сопоставляется с c:/cygwin/home/$YOURNAME. Таким образом, вы можете все там положить.

Вы также можете получить доступ к c: накопителю из cygwin через/cygdrive/c/(например,/cygdrive/c/Documents anb Settings/yourname/Desktop).

Ответ 2

Относительно вашего обновленного вопроса о недостающем cygwin1.dll.

С терминальной проверки Cygwin,

ls /usr/bin/cygwin1.dll

Если он отсутствует (я сомневаюсь, что), ваша установка выполняется неправильно.

Затем проверьте свой путь с помощью

echo $PATH

Это даст : выделенный список путей. Он ДОЛЖЕН содержать /usr/bin. Если вы обнаружите, что отсутствует, добавьте его,

export PATH=/usr/bin:$PATH

Наконец,

  • Надеюсь, вы используете Cygwin с терминала cygwin (маленький зеленый + черный значок, установленный с Cygwin) или MinTTY (если вы его установили).
  • И вы не переместили скомпилированный EXE на другой компьютер, на котором не установлен Cygwin (если вы это сделаете, вам придется переносить cygwin1.dll на эту машину - храните его в той же папке, что и скомпилированный EXE).

Ответ 4

Просто подведем итоги, вот несколько команд, которые переходят к каталогу и компилируют код с помощью Cygwin и Windows Vista:

  • Запустите оболочку Cygwin.
  • В командной строке используйте cd, чтобы перейти в соответствующий каталог:

    $cd/cygdrive/c/Users/nate/Desktop

  • Используйте ls, чтобы перечислить файлы в каталоге:

    $ls

    prog.c

  • Используйте команду gcc для компиляции файла в этом каталоге:

    $gcc prog.c -o prog

  • Если вы не видите никаких ошибок, вы сможете запустить результирующую программу:

    $./prog

Update:

Для ошибки "Cygwin1.dll not found" мне нравится ответ Ник. Вы также можете проверить эту связанную статью о том, что cygwin1.dll не найден, что предполагает добавление c:\cygwin\bin\ в вашу Windows PATH.

Есть инструкции о том, как изменить переменную Windows PATH для Windows XP, а в Vista я думаю, что она похожа.

  • Перейдите в Панель управления → Система
  • Выберите "Расширенные настройки системы"
  • Перейдите на вкладку "Дополнительно"
  • Нажмите "Переменные среды"
  • В разделе "Системные переменные" найдите запись "Путь" и нажмите "Изменить"
  • Добавить c:\cygwin\bin в список, чтобы отделить его от любых предыдущих элементов с точкой с запятой

Ответ 5

Что касается ошибки cygwin1.dll не найденной, решение, которое я использовал не менее 8 лет, - это добавить каталоги bin bin Cygwin в конец моего %PATH% в "Мой компьютер" → "Свойства" → "Дополнительно" → "Переменные окружения", Я добавляю их в конец пути, поэтому в своей обычной работе они обысканы последними, сводя к минимуму возможность конфликтов (на самом деле у меня не было проблем с конфликтами за все это время).

При вызове оболочки Cygwin Bash эти каталоги будут добавлены к %PATH%, поэтому все будет работать так же, как и в этой среде.

Когда вы не работаете в оболочке Cygwin, мой %PATH%:

Path=c:\opt\perl\bin; \
     ...
     C:\opt\cygwin\bin; \
     C:\opt\cygwin\usr\bin; \
     C:\opt\cygwin\usr\local\bin;

Таким образом, например, ActiveState Perl perl обнаруживается первым, когда я не находится в оболочке Cygwin, но Cygwin perl обнаруживается, когда я работаю в оболочке Cygwin.

Ответ 6

Если вам неудобно работать с bash, вы можете продолжить работу в стандартной команде Windows (например, DOS).

Для этого вам нужно добавить C:\cygwin\bin (или вашу локальную альтернативу) в переменную Windows PATH.

Сделав это, вы можете:   1) Откройте команду (DOS) shell   2) Измените каталог на местоположение вашего кода (c:, затем cd path\to\file)   3) gcc myProgram.c -o myProgram

Как упоминалось в ответе nik, документация "Использование Cygwin" - отличное место, чтобы узнать больше.

Ответ 7

Путь к Windows C:\src под cygwin становится /cygdrive/c/src

Ответ 8

Если вы просто сделаете gcc program.c -o program -mno-cygwin, он скомпилируется просто отлично, и вам не нужно будет добавлять cygwin1.dll на ваш путь, и вы можете просто продолжить и распространить свой исполняемый файл на компьютер который не установлен cygwin, и он все равно будет работать. Надеюсь, что это поможет

Ответ 9

Компиляция вашей C-программы с помощью Cygwin

Мы будем использовать компилятор gcc для Cygwin для компиляции программ.

1) Запустите Cygwin

2) Перейдите в каталог, созданный для этого класса, набрав

cd c:/windows/desktop

3) Скомпилируйте программу, набрав

gcc myProgram.c -o myProgram

команда gcc вызывает компилятор gcc для компиляции вашей программы на C.

Ответ 10

Возможно, вам лучше редактировать файл внутри оболочки cygwin. Обычно он запускается по умолчанию, когда вы запускаете его. Вы можете отредактировать файл из оболочки, сделав что-то вроде "vi somefile.c" или "emacs somefile.c". Предположим, что vi или emacs установлены в cygwin.

Если вы хотите файл на своем рабочем столе, вам нужно перейти на аналогичный путь (в XP) на "/cygwindrive/c/Documents\and\Settings/Frank/Desktop" (если память правильно работает). Просто подключитесь к этому пути и запустите свою команду в файле.

Ответ 11

Cygwin очень круто! Вы можете скомпилировать программы из других систем (например, Linux), и они будут работать. Я говорю о программах связи или веб-серверах даже.

Вот один трюк. Если вы просматриваете файл в Проводнике Windows, вы можете ввести "cd" в свои окна bash, а затем перетащить из адресной строки проводника в окно cygwin, и полный путь будет скопирован! Кстати, это работает и в командной оболочке Windows.

Также: пока "cd/cygdrive/c" является формальным путем, он также примет "cd c:" как ярлык. Возможно, вам понадобится сделать это, прежде чем перетаскивать остальную часть пути.

Файл stdio.h должен быть найден автоматически, как это было бы в обычной системе.