Незначительное изменение команды для компиляции программы на C ++ вызывает ошибку

Сегодня утром я пытался скомпилировать программу на C ++, используя следующую команду в командной строке

g++ -o foo.cpp foo 

Я трачу около часа, пытаясь решить, почему я продолжал получать неопределенные ссылки и множественную ошибку определения, пока не понял, что моя команда для компиляции была неправильной, и это должно быть

 g++ foo.cpp -o foo 

Мне просто интересно, какая разница в процессе между g++ -o foo.cpp foo и g++ foo.cpp -o foo .

Почему размещение ошибки -o infront вызывает компиляцию

  • Какой процесс обновляется / proc / scsi / scsi?
  • Как я могу создать свою собственную панель выполнения в Конки?
  • Каково число в верхней части для результатов для ls -l?
  • почему «timer_t» определяется в «time.h» в Linux, но не OS X
  • open () вернуть новый дескриптор файла posix
  • Средство чтения в командной строке (например, «меньше»), которое может указать строку, где пользователь перестает читать
  • Как заменить GnuPG стабильным с GnuPG современным?
  • Проблема зависимостей с automake
  • 2 Solutions collect form web for “Незначительное изменение команды для компиляции программы на C ++ вызывает ошибку”

    Потому что -o указывает внешний файл. Первое означает, что outfile будет «foo.cpp», а второй означает, что ваш файл будет «foo».

    Синтаксис g ++:

    gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...] [-pedantic] [-Idir...] [-Ldir...] [-Dmacro[=defn]...] [-Umacro] [-foption...] [-mmachine-option...] [-o outfile] [@file] infile...

    Соответствующая справочная страница: http://linux.die.net/man/1/g++

    Переключатель -o принимает аргумент. В вашем случае вы говорили g++ чтобы вывести полученную компиляцию в файл foo.cpp . Это не то, что вы хотите.

     $ g++ -o foo.cpp foo 

    Вы хотите вывести результирующую компиляцию исходного файла ( foo.cpp ) в двоичный файл foo .

     $ g++ foo.cpp -o foo 

    выдержка из справочной страницы g ++

     -o <file> Place the output into <file> 
    Linux и Unix - лучшая ОС в мире.