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

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

g++ -o foo.cpp foo 

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

 g++ foo.cpp -o foo 

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

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

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> 
  • Есть ли более новая версия gcc в красной шляпе?
  • Библиотека IOCTL () для Windows
  • Ядро Linux 3.2 syscalls
  • sudo apt-get install g ++ - 4.8-multilib не работает на Mint?
  • Как Node.js / модуль кластера передает новые соединения из процесса master / parent, дочерних процессов?
  • как кодировать c ++ через ssh с помощью Vim или Vi?
  • Отладка с помощью программирования оболочки и файлов cpp?
  • Как отлаживать модуль ядра, в котором отображается указатель NULL?
  • как создать kernel-tools-4.2.xx.rpm и kernel-ltools-libs-4.2.xx.rpm
  • Как установить последнюю стабильную версию GCC в Linux Mint?
  • программа «убита», как только она запускается
  • Не освобождает () unmap память процесса?
  • Linux и Unix - лучшая ОС в мире.