2009-06-18 4 views
14

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

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

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

#include <stdio.h> 

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

gcc myProgram.c -o myProgram 

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

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

+0

Вместо ссылки на cygwin1.dll вы можете просто передать «-mno-cygwin» в GCC при компиляции (http://www.delorie.com/howto/cygwin/mno-cygwin-howto .html). –

+3

Просто для тех, кто также не смог запустить скомпилированное приложение, используйте '$./MyProgram' не просто' $ myProgram' – Paul

+0

Не возражайте, если обновите изображение, которое, похоже, не работает. – William

ответ

14

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

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

+0

Это решение, которое я использовал. Я смог поместить все (от источника управления) в мой ДОМ, и это сработало как шарм. Это даже легко добраться. Благодаря! –

1

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

0

Компиляция C программы с использованием Cygwin

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

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

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

кд C:/Windows/рабочий стол

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

gcc myProgram.c -o myProgram

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

0

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

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

0

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

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

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

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

2

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

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

С этим сделано, вы можете: 1) Открыть команду (DOS) оболочки 2) Изменение каталога на месте вашего кода (C :, то кд путь \ к \ файлу) 3) НКУ MyProgram .c -o myProgram

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

4

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

  1. Запустить оболочку Cygwin.
  2. В приглашении, используйте cd для перехода в соответствующий каталог:

    $ кд/cygdrive/с/Users/Nate/Desktop

  3. Используйте ls список файлов в каталоге:

    $ Ls

    prog.c

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

    $ НКУ prog.c -o прог

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

    $./ Прог

Update:

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

Есть instructions on how to change the Windows PATH variable для Windows XP, и на Vista я думаю, что это похоже.

  1. Перейти в Панель управления -> Система
  2. Настройки
  3. Выберите Advanced System
  4. Нажмите на вкладке Advanced
  5. Нажмите на Переменные среды
  6. Под Системные переменные, найдите Путь и нажмите Редактировать
  7. Добавить c:\cygwin\bin в список, убедившись в том, чтобы отделить его от любых предыдущих пунктов точки с запятой
+0

Программа даст ошибку, которую я написал выше. –

+0

Помогает ли вам изменить ваш путь в оболочке или на панели управления Windows? –

9

Что касается обновленного вопроса о отсутствующем 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

Относительно cygwin1.dll не найдена ошибка, решение я использовал в течение по крайней мере 8 лет, чтобы добавить бен каталоги 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; 

Таким образом, например, Perl ActiveState в Perl найден первый, когда я не в Cygwin Shell, но Perl Cygwin найден, когда Я работаю в Cygwin Shell.

1

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