g ++ в cygwin не создает .exe файл - PullRequest
3 голосов
/ 11 января 2012

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

g++ test.gpp -o test

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

g++ test.gpp -o test.exe

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

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

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Насколько я могу судить, 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 есть что-то похожее на корректный скрипт компоновщика?

0 голосов
/ 11 января 2012
g++ test.gpp -o test

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

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

...