2012-01-11 3 views
3

Я только что установил cygwin в новом окне Windows, работающем под управлением Windows 7, и я получаю забавное поведение при компиляции C++-программы. Вот что я типа:g ++ в cygwin не создает файл .exe

g++ test.gpp -o test 

На моих ящиках для Windows, это создает файл EXE, test.exe, и это, конечно, исполняемый файл. Но при этой установке создается тестовый файл. К моему удивлению, это не исполняемый файл, а скорее выглядит как файл отладки (в ascii-файлах). Если я вместо этого набираю:

g++ test.gpp -o test.exe 

Тогда я получаю исполняемый файл test.exe. (1) почему во всех моих других реализациях я получаю исполняемый файл, но не с этой последней попыткой? (2) Почему меня это волнует? Ну, я также работаю над linux-блоками и не привык печатать расширение «.exe». (I ненавижу этот аспект файлов, отличных от linux!) Я предполагаю, что есть какой-то одноразовый флаг, который я могу установить для создания файла по умолчанию, который g ++ создает .exe-файл.

Проблема с этой проблемой заключается в том, что никто из вас не сможет воспроизвести ее! (Я не могу на других машинах!)

+1

У вас нет двух разных версий 'g ++', установленных в проблемной системе? Может быть, также и MinGW? Попробуйте 'g ++' проверить. –

+0

@WarrenYoung: Или 'type -a g ++', чтобы увидеть всю версию в вашей '$ PATH'. –

ответ

0
g++ test.gpp -o test 

Это должно создать файл с именем test (без расширения). Если этот файл создан, чем предоставить исполняемый файл, используйте файл chmod +x test

, чем использовать ./test для его запуска. посмотрите, работает ли он.

+0

Нет, на Cygwin созданный файл 'test.exe' (который также можно назвать просто' test') - и 'g ++' должен создать его с разрешениями на выполнение. –

3

Насколько я могу судить, g++ не признает расширение .gpp. Переименуйте файл с test.gpp на номер test.cpp и повторите попытку.

В моей системе Cygwin, g++ test.gpp дает мне сообщение об ошибке:

... file format not recognized; treating as linker script ... 

Cygwin компиляторы создавать исполняемые файлы с .exe расширения (потому что Windows, требует), но она также позволяет ссылаться на такие файлы без суффикс. Так, например:

ls -l test.exe 

и

ls -l test 

оба должны показать вам один и тот же файл. (Если у вас есть файлы с обоими именами, все может немного запутаться - так что не делайте этого.) g++-s вариант также относится к суффиксу .exe специально, поэтому -o test и -o test.exe должны делать то же самое.

Я не знаю, почему вы видите поведение, которое вы описываете. Возможно, у вас есть что-то в test.gpp, которое выглядит как действительный скрипт-линкера?

Смежные вопросы