Незначительное изменение команды для компиляции программы на 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> 
  • uXlib.h В каком пакете есть этот файл lib?
  • Как установить последнюю стабильную версию GCC в Linux Mint?
  • Не удалось получить доступ к linux / skbuff.h
  • Состояние сетевых портов
  • как кодировать c ++ через ssh с помощью Vim или Vi?
  • Могу ли я добавить правило iptables изнутри программы C Linux только с возможностями или мне нужно обязательно root?
  • gcc: -pthread: нет такого файла или каталога
  • Linux C / C ++ - любой способ создать «прозрачный» сокет SSL / TLS?
  • Внешнее предельное число используемых ядер процессора
  • Как проверить, является ли процесс демоном или нет?
  • почему «timer_t» определяется в «time.h» в Linux, но не OS X
  • Linux и Unix - лучшая ОС в мире.