Незначительное изменение команды для компиляции программы на 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> 
  • Интерпретация имени библиотеки `man` C
  • Как дебютировать (Debian) Apache без его выполнения
  • Как скомпилировать файлы вручную .1
  • Части заголовка файла
  • Получить статистику использования CPU из программы C
  • какие дистрибутивы проверяются на успешную компиляцию?
  • Почему каталог env вызывается перед echo?
  • Чтение файлов .desktop программно
  • Как действительно работает системный вызов fork
  • Почему процесс «ребенка» заканчивается перед его родителем?
  • Linux C / C ++ - любой способ создать «прозрачный» сокет SSL / TLS?
  • Linux и Unix - лучшая ОС в мире.