unixforum.org
Здесь не нужны аргументы
И подробностей, необходимых в начале изучения, здесь тоже немного:
Gcc — компилятор для языка Си, g++ — для Си++.
Как уже вам неоднократно говорили в соседней теме, это разные языки. Только и всего. Пользуйтесь компилятором для того языка, который изучаете, и не будет вам никаких проблем. Какие-то специфические фишки того и другого компилятора понадобятся позже.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 21:07
02.03.2008 20:23
Здесь не нужны аргументы
И подробностей, необходимых в начале изучения, здесь тоже немного:
Gcc — компилятор для языка Си, g++ — для Си++.
Как уже вам неоднократно говорили в соседней теме, это разные языки. Только и всего. Пользуйтесь компилятором для того языка, который изучаете, и не будет вам никаких проблем. Какие-то специфические фишки того и другого компилятора понадобятся позже.
Тогда такой вопрос. g++ и gcc — это независимые компиляторы?
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
02.03.2008 21:07
Тогда такой вопрос. g++ и gcc — это независимые компиляторы?
Как программы — нет, не независимые.
Как компиляторы — таки да, независимые, поскольку компилируют разные языки.
Медитировать над фразой «C и C++ языки разные» до полного просветления.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 21:44
02.03.2008 21:31
02.03.2008 21:07
Тогда такой вопрос. g++ и gcc — это независимые компиляторы?
Как программы — нет, не независимые.
Как компиляторы — таки да, независимые, поскольку компилируют разные языки.
Медитировать над фразой «C и C++ языки разные» до полного просветления.
Тогда в чем они как программы зависимы?
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
02.03.2008 21:44
Тогда в чем они как программы зависимы?
Они используют общую кодовую базу. Как, например, konqueror и klines различны по предназначению, но зависимы как программы, поскольку используют ту же кодовую базу (kde и qt).
Глянь на вывод
ldd `which gcc`
и
ldd `which g++`
хохмы ради.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 21:56
02.03.2008 21:50
02.03.2008 21:44
Тогда в чем они как программы зависимы?
Они используют общую кодовую базу. Как, например, konqueror и klines различны по предназначению, но зависимы как программы, поскольку используют ту же кодовую базу (kde и qt).
Глянь на вывод
ldd `which gcc`
и
ldd `which g++`
хохмы ради.
bash-3.1$ ldd `which gcc`
linux-vdso.so.1 => (0x00007fff821fe000)
libc.so.6 => /lib/libc.so.6 (0x00002b8128adb000)
/lib/ld-linux-x86-64.so.2 (0x00002b81288be000)
bash-3.1$ ldd `which g++`
linux-vdso.so.1 => (0x00007fffe25fe000)
libc.so.6 => /lib/libc.so.6 (0x00002ae9c881b000)
/lib/ld-linux-x86-64.so.2 (0x00002ae9c85fe000)
Все нашел ldd — выдает список общих библиотек(shared objects), требующихся программе или библиотеке, для нормальной работы.
Так, библиотеки у них одинаковы, так осталось одно что мне не понятно- в чем основное различие, если с таким же успехом, программу написанную на c++ можно откомпилировать gcc -o proga proga.cc -lstdc++?
Я нашел только одно — это libstdc++. Еще есть?
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
02.03.2008 21:56
Так, библиотеки у них одинаковы, так осталось одно что мне не понятно- в чем основное различие, если с таким же успехом, программу написанную на c++ можно откомпилировать gcc -o proga proga.cc -lstdc++?
Я нашел только одно — это libstdc++. Еще есть?
Различие в том, что они делают разные вещи. У меня акцент, или это эхо в помещении?
Да, можно откомпилировать с -lstdc++ Можно микроскопом забивать гвозди, а асфальтовым катком колоть орехи. Можно вообще все на ассемблере писать, и голова болеть не будет.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 22:15
02.03.2008 22:10
02.03.2008 21:56
Так, библиотеки у них одинаковы, так осталось одно что мне не понятно- в чем основное различие, если с таким же успехом, программу написанную на c++ можно откомпилировать gcc -o proga proga.cc -lstdc++?
Я нашел только одно — это libstdc++. Еще есть?
Различие в том, что они делают разные вещи. У меня акцент, или это эхо в помещении?
Да, можно откомпилировать с -lstdc++ Можно микроскопом забивать гвозди, а асфальтовым катком колоть орехи. Можно вообще все на ассемблере писать, и голова болеть не будет.
То есть наконец-то я нашел ответ на свой вопрос.
Определение:
Компилятор g++ — это компилятор gcc, дополненный библиотекой libstdc++.
Почему-то мне так сразу никто не сказал.
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
—=Civil696=— Сообщения: 227 ОС: Gentoo o_O
Re: Чем gcc отличается от g++
02.03.2008 21:56
02.03.2008 21:50
02.03.2008 21:44
Тогда в чем они как программы зависимы?
Они используют общую кодовую базу. Как, например, konqueror и klines различны по предназначению, но зависимы как программы, поскольку используют ту же кодовую базу (kde и qt).
Глянь на вывод
ldd `which gcc`
и
ldd `which g++`
хохмы ради.
bash-3.1$ ldd `which gcc`
linux-vdso.so.1 => (0x00007fff821fe000)
libc.so.6 => /lib/libc.so.6 (0x00002b8128adb000)
/lib/ld-linux-x86-64.so.2 (0x00002b81288be000)
bash-3.1$ ldd `which g++`
linux-vdso.so.1 => (0x00007fffe25fe000)
libc.so.6 => /lib/libc.so.6 (0x00002ae9c881b000)
/lib/ld-linux-x86-64.so.2 (0x00002ae9c85fe000)
Все нашел ldd — выдает список общих библиотек(shared objects), требующихся программе или библиотеке, для нормальной работы.
Так, библиотеки у них одинаковы, так осталось одно что мне не понятно- в чем основное различие, если с таким же успехом, программу написанную на c++ можно откомпилировать gcc -o proga proga.cc -lstdc++?
Я нашел только одно — это libstdc++. Еще есть?
а вы попробуйте для наглядности код который Uncle_Theodore запостил в соседнем топике откомпилировать при помощи gcc с параметром -lstdc++ не знаю как у вас, но у меня куча ошибок, а вот g++ компилит и не жужжит
почему? наверно потому что gcc и g++ это просто напросто компиляторы разных языков программирования
а общие библиотеки и у amarok’а с kwrite есть это ведь не превращает плеер в текстовый редактор
Н Е П А Н И К У Й © ^_~
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
02.03.2008 22:15
То есть наконец-то я нашел ответ на свой вопрос.
Определение:
Компилятор g++ — это компилятор gcc, дополненный библиотекой libstdc++.
Почему-то мне так сразу никто не сказал.
Ну, еще некоторыми вещами. Херовой тучей заголовков, например. Или STL так, к слову вспоминается. Но в целом, да.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 22:20
02.03.2008 22:19
02.03.2008 22:15
То есть наконец-то я нашел ответ на свой вопрос.
Определение:
Компилятор g++ — это компилятор gcc, дополненный библиотекой libstdc++.
Почему-то мне так сразу никто не сказал.
Ну, еще некоторыми вещами. Херовой тучей заголовков, например. Или STL так, к слову вспоминается. Но в целом, да.
Какими заголовками например?
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
02.03.2008 22:20
Какими заголовками например?
ls /usr/include/c++/4.2.3/
Спасибо сказали:
v04bvs Сообщения: 636 ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Сообщение v04bvs » 02.03.2008 22:27
Всё несколько сложнее.
Реальный компилятор языка С на моей системе лежит здесь: /usr/lib/gcc/i486-linux-gnu/4.1.3/cc1 и занимает около 5 мегабайтов.
Реальный компилятор языка С++ на моей системе лежит здесь: /usr/lib/gcc/i486-linux-gnu/4.1.3/cc1plus и занимает около 5.5 мегабайтов.
Но они умеют только превращать код на С/C++ в код на языке ассемблера. Далее этот код на языке ассемблера нужно транслировать в машинный код. Этим занимается команда as. На выходе получается объектный файл с расширением .o
После того, как все исходные файлы откомпилированы и из них получены объектные файлы, они передаются линкеру. Так же линкеру передаётся список динамических и статических библиотек. Он из всего этого добра делает один исполняемый файл (или разделяемую библиотеку).
Как видно, в процессе компиляции учавствует много разных программ. Вручную вызывать их все было бы неудобно. Именно для упрощения подобных задач и сделаны врапперы вроде /usr/bin/gcc или /usr/bin/g++.
Спасибо сказали:
—=Civil696=— Сообщения: 227 ОС: Gentoo o_O
Re: Чем gcc отличается от g++
02.03.2008 22:20
Сейчас попробую
стоп пардон теперь вру я
просто когда компилировал засунул код в первый попавшийся файл, которым оказался foo.c (уж и не помню что он у меня делает) в следствии чего g++ компилил нормально и с таким расширением, а вот gcc на «syntax error» ругался поле смены расширения на *.cpp стали компилить оба
Н Е П А Н И К У Й © ^_~
Спасибо сказали:
v04bvs Сообщения: 636 ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Сообщение v04bvs » 02.03.2008 22:31
02.03.2008 22:19
02.03.2008 22:15
То есть наконец-то я нашел ответ на свой вопрос.
Определение:
Компилятор g++ — это компилятор gcc, дополненный библиотекой libstdc++.
Почему-то мне так сразу никто не сказал.
Ну, еще некоторыми вещами. Херовой тучей заголовков, например. Или STL так, к слову вспоминается. Но в целом, да.
команда gcc прекрасно подключает все С++-ные заголовки.
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
02.03.2008 22:31
команда gcc прекрасно подключает все С++-ные заголовки.
Да, и что? А на асме можно написать вообще любой код, который можно написать на любом другом языке. Вывод? Ассемблер ничем не отличается от Лиспа?
Какой-то беспредметный спор, чесслово.
Можно вообще исполняемых эльфов в хексовом редакторе напрямую писать.
Спасибо сказали:
v04bvs Сообщения: 636 ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Сообщение v04bvs » 02.03.2008 22:37
02.03.2008 22:33
02.03.2008 22:31
команда gcc прекрасно подключает все С++-ные заголовки.
Да, и что? А на асме можно написать вообще любой код, который можно написать на любом другом языке. Вывод? Ассемблер ничем не отличается от Лиспа?
Какой-то беспредметный спор, чесслово.
Да никто с вами не спорит. Вы говорите, что gcc в режиме компиляции C++-кода не подключает STL-ные заголовки. Я вас поправил. Каким боком здесь оказался лисп с ассемблером, я вообще не понимаю.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 22:40
02.03.2008 22:33
02.03.2008 22:31
команда gcc прекрасно подключает все С++-ные заголовки.
Да, и что? А на асме можно написать вообще любой код, который можно написать на любом другом языке. Вывод? Ассемблер ничем не отличается от Лиспа?
Какой-то беспредметный спор, чесслово.
Можно вообще исполняемых эльфов в хексовом редакторе напрямую писать.
Ну и кто дополнит сформулированное выше определение компилятора g++ и его отличие от gcc? Или к общему мнению не придем?
Я спрашивал вас как хороших программистов — старожилов. Вопрос темы стоит четко
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
3al Сообщения: 131 ОС: Arch
Re: Чем gcc отличается от g++
Сообщение 3al » 02.03.2008 22:46
02.03.2008 22:40
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
gcc — Gnu Compiler Collection, вызывает компиляторы других языков.
g++ — компилятор с языка c++ для gcc.
Подробности знает вики и гугль.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 22:50
02.03.2008 22:46
02.03.2008 22:40
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
gcc — Gnu Compiler Collection, вызывает компиляторы других языков.
g++ — компилятор с языка c++ для gcc.
Подробности знает вики и гугль.
Не ответ
Простите, а вы внимательно читали про gcc -o proga proga.cc -lstdc++ ?
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
—=Civil696=— Сообщения: 227 ОС: Gentoo o_O
Re: Чем gcc отличается от g++
02.03.2008 22:40
Ну и кто дополнит сформулированное выше определение компилятора g++ и его отличие от gcc? Или к общему мнению не придем?
Я спрашивал вас как хороших программистов — старожилов. Вопрос темы стоит четко
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
давайте мы с вами сойдёмся на том что g++ это то чем пользуются ленивые линуксоиды (а все люди по своей природе ленивы) чтобы скомпилить текст своей программы на языке C++ используя для этого как можно меньше нажатий клавиш
а если вам всёже интересно предлагаю почитать в википедии http://ru.wikipedia.org/wiki/GNU_Compiler_Collection
кстати сам только сейчас заглянул и узнал что
Изначально названный GNU C Compiler, он поддерживал только язык C. Позднее, GCC был расширен для компиляции исходных кодов на таких языках программирования как C++, Objective-C, Java, Fortran, и Ada.
а то нас скоро во флейм перенесут
Н Е П А Н И К У Й © ^_~
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
02.03.2008 22:37
Вы говорите, что gcc в режиме компиляции C++-кода не подключает STL-ные заголовки.
Я никогда подобного не говорил. Хотя бы потому что никакого «режима компиляции C++ кода в gcc» не существует. Вся эта фраза — полная бессмыслица.
02.03.2008 22:40
Вопрос темы стоит четко
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
Тем, что они компилируют с разных языков. Какие еще Вам аргументы нужны? Предназначением они различаются. Все остальные Ваши «определения» и «объяснения» — набор слов и самообман.
Вот Вам пример забавный.
#include int main()
Скомпилируйте его gcc’ём и прогоните, а потом скомпилируйте g++’ом и прогоните.
А мне надоело из пустого в порожнее переливать.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 23:00
Просмотрел я эту ссылку
http://ru.wikipedia.org/wiki/GNU_Compiler_Collection
Там не сказано четко чем gcc отличается от g++.
Тем более что тогда получается что gcc- набор компиляторов, а g++ это часть gcc и отдельного компилятора g++ не существует.
Я жду точного полного и аргументированного определения. Понимаете, нет четкости терминологии, и это приводит к путанице.
G++ это — .
Отличается от gcc :
1.
2.
.
.
.
n
Пока большинство объяснений напоминает мне диалог.
» Что такое производная?»
» Ну это например когда икс квадрат взять производную будет два икс
» А чем она отличается от дифференциала?
» Ну это когда берешь производную и умножаешь на дельта икс»
Вот и в итоге четкой терминологии нет. Хотя она существует
Странно, я думал программисты это знают
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
v04bvs Сообщения: 636 ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Сообщение v04bvs » 02.03.2008 23:13
02.03.2008 22:56
никакого «режима компиляции C++ кода в gcc» не существует. Вся эта фраза — полная бессмыслица.
gcc это front-end к коллекции компиляторов. Он умеет компилировать код на языках С, С++, Fortran, Ada, и др. Где вы тут увидели бессмыслицу, мне остаётся только гадать.
Вот Вам пример забавный.
#include int main()
Скомпилируйте его gcc’ём и прогоните, а потом скомпилируйте g++’ом и прогоните.
А мне надоело из пустого в порожнее переливать.
vsb-laptop% vim test.c vsb-laptop% ln test.c test.cpp vsb-laptop% gcc test.c -o c vsb-laptop% gcc test.cpp -o cpp -lstdc++ vsb-laptop% ./c I'm a C program! vsb-laptop% ./cpp I'm a C++ program!
И никакого g++. Чудеса да и только.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 02.03.2008 23:18
02.03.2008 22:56
02.03.2008 22:37
Вы говорите, что gcc в режиме компиляции C++-кода не подключает STL-ные заголовки.
Я никогда подобного не говорил. Хотя бы потому что никакого «режима компиляции C++ кода в gcc» не существует. Вся эта фраза — полная бессмыслица.
02.03.2008 22:40
Вопрос темы стоит четко
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
Тем, что они компилируют с разных языков. Какие еще Вам аргументы нужны? Предназначением они различаются. Все остальные Ваши «определения» и «объяснения» — набор слов и самообман.
Вот Вам пример забавный.
#include int main()
Скомпилируйте его gcc’ём и прогоните, а потом скомпилируйте g++’ом и прогоните.
А мне надоело из пустого в порожнее переливать.
Скомпилил и gcc и g++ компилит и gcc с ключом -lstdc++ все идет. Если вы про ++ то это ничего не объясняет, не ответ на вопрос
«Ubuntu» is an ancient African word, that means «I can’t configure Slackware»
Спасибо сказали:
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Хорошо, последний раз попробую до Вас достучаться.
g++ — это программа для компиляции кода на C++. Да, команду gcc с определенными извратами можно заставить компилировать C++ код. Но команда g++ специально для этого предназначена, и использовать следует именно ее.
Compiling C ++ Programs
C ++ source files conventionally use one of the suffixes .C, .cc, .cpp, .CPP, .c++, .cp, or .cxx; C ++ header files often use .hh or .H; and preprocessed C ++ files use the suffix .ii. GCC recognizes files with these names and compiles them as C ++ programs even if you call the compiler the same way as for compiling C programs (usually with the name gcc).
However, C ++ programs often require class libraries as well as a compiler that understands the C ++ language—and under some circumstances, you might want to compile programs or header files from standard input, or otherwise without a suffix that flags them as C ++ programs. You might also like to precompile a C header file with a .h extension to be used in C ++ compilations. g++ is a program that calls GCC with the default language set to C ++ , and automatically specifies linking against the C ++ library. On many systems, g++ is also installed with the name c++.
When you compile C ++ programs, you may specify many of the same command-line options that you use for compiling programs in any language; or command-line options meaningful for C and related languages; or options that are meaningful only for C ++ programs.
Если после всего этого Вы опять скажете, что у Вас путаница, и Вам не хватает ясности по пунктам, я решу, что Вы надо мной издеваетесь.
Спасибо сказали:
andreas90 Сообщения: 158 ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сообщение andreas90 » 03.03.2008 00:23
03.03.2008 00:09
Хорошо, последний раз попробую до Вас достучаться.
g++ — это программа для компиляции кода на C++. Да, команду gcc с определенными извратами можно заставить компилировать C++ код. Но команда g++ специально для этого предназначена, и использовать следует именно ее.
Compiling C ++ Programs
C ++ source files conventionally use one of the suffixes .C, .cc, .cpp, .CPP, .c++, .cp, or .cxx; C ++ header files often use .hh or .H; and preprocessed C ++ files use the suffix .ii. GCC recognizes files with these names and compiles them as C ++ programs even if you call the compiler the same way as for compiling C programs (usually with the name gcc).
However, C ++ programs often require class libraries as well as a compiler that understands the C ++ language—and under some circumstances, you might want to compile programs or header files from standard input, or otherwise without a suffix that flags them as C ++ programs. You might also like to precompile a C header file with a .h extension to be used in C ++ compilations. g++ is a program that calls GCC with the default language set to C ++ , and automatically specifies linking against the C ++ library. On many systems, g++ is also installed with the name c++.
When you compile C ++ programs, you may specify many of the same command-line options that you use for compiling programs in any language; or command-line options meaningful for C and related languages; or options that are meaningful only for C ++ programs.
Если после всего этого Вы опять скажете, что у Вас путаница, и Вам не хватает ясности по пунктам, я решу, что Вы надо мной издеваетесь.
Тогда получается что g++ — это вызванный gcc с установленным по умолчанию языком C++ с установленными линковками к библиотекам С++ =>
g++ = (gcc плюс некоторые библиотеки (lstdc++ и др))) так? Я вас правильно понял?
gcc vs g++: What’s the Difference?
gcc and g++ compilers work quite similar when it comes to compiling C programs in Linux. Here’s how they are different from each other.
gcc vs g++: What’s the Difference?
Have you ever thought about the difference between GCC and G++? Well, if I were to answer this in one sentence, it would be «GCC is used to compile C programs whereas G++ is for C++».
But there’s a lot more to talk about, such as how you install and use them.
So let’s start with the basic introduction.
What is the difference between GCC and G++?
The GCC compiler is used to compile the C programs, whereas the G++ is used for C++ programs. While you could still use GCC to compile C++ program (by using it in gcc -xc++ -lstdc++ -shared-libgcc format, g++ provides a simpler syntax.
Actually, GCC (GNU Compiler Collection) is a super set of various compilers. It has g++ for C++ and GNAT for Ada programming language.
While gcc is capable of compiling C++ programs with help of special flags, you should use g++ instead. The g++ compiler links to standard C++ libraries by default. GCC can also do that but not by default.
To summarize, use GCC is for compiling C programs and g++ for C++.
Now, let’s have a look at the installation.
Installation
Being one of the most essential tools for compiling C and C++ programs in Linux, they both are available in the repositories of all Linux distributions.
Here’s how you install it on various Linux distributions:
For Ubuntu/Debian base:
sudo apt install gcc g++
sudo dnf instal gcc g++
sudo pacman -S gcc
(Arch includes G++ in the GCC package itself)
Usage
In this section, I will walk you through how you can compile C and C++ programs using GCC and G++.
To make this guide accessible, I will be using the following C programming code:
#include int main()
And here’s the C++ code:
#include int main()
They both should print a simple Hello, World! line.
Compile and run C code
To compile a C program, you can use gcc or g++. If you want to use gcc, here’s the syntax that you need to follow:
gcc -o my_program my_program.c
- -o is used to specify the output file
- my_program is where you specify the name of the output file
- my_program.c is where you append the name of the input file
For example, here’s how I compiled my hello.c file using the GCC compiler:
gcc -o hello hello.c
To execute any compiled file, add ./ before the name of the compiled file:
./hello

Similarly, if you want to use G++ to compile the C program, use the following:
g++ -o cpp_program cpp_program.c
Here’s how I compiled and ran the same hello.c program with G++:

The && operator is used to run multiple commands but the compilation code will be executed first and then the execution will be done.
Compile and run C++ code
To compile C++ code, you have to use the G++ compiler in the following manner:
g++ -o my_code my_code.cpp
Once done, you can run the code using the executable file:
./my_code
For example, here’s how I compiled hello.cpp file using the G++ compiler:
g++ -o hello hello.cpp && ./hello

Next: Here are some important GCC flags
If you are just getting started with the C programming, you are about to use GCC a lot but there are multiple flags that you can use while compiling code.
I hope you will find this guide helpful.
What is the difference between g++ and gcc?
What is the difference between g++ and gcc? Which one of them should be used for general c++ development?
23 5 5 bronze badges
asked Oct 5, 2008 at 20:25
Brian R. Bondy Brian R. Bondy
340k 124 124 gold badges 597 597 silver badges 636 636 bronze badges
10 Answers 10
gcc and g++ are compiler-drivers of the GNU Compiler Collection (which was once upon a time just the GNU C Compiler).
Even though they automatically determine which backends ( cc1 cc1plus . ) to call depending on the file-type, unless overridden with -x language , they have some differences.
The probably most important difference in their defaults is which libraries they link against automatically.
According to GCC’s online documentation link options and how g++ is invoked, g++ is roughly equivalent to gcc -xc++ -lstdc++ -shared-libgcc (the 1st is a compiler option, the 2nd two are linker options). This can be checked by running both with the -v option (it displays the backend toolchain commands being run).
By default (and unlike gcc ), g++ also adds linker option -lm — to link against libm which contains implementations for math.h .
5,600 19 19 silver badges 31 31 bronze badges
answered Oct 5, 2008 at 20:26
Mike F Mike F
From this answer, I conclude that effectively g++ command is just gcc with a bunch of flags .. Why then, there are two different binaries(of approximately the same size ) for gcc and g++ in linux ?. Shouldn’t we have just one binary and one symlink(or something along those lines) ?
Jul 17, 2019 at 14:32
@Uchihaltachi these files are hard links and when they are booted up they check argv[0] to see which invocation should be used. This is pretty common among the core UNIX utilities.
– user836218
Nov 12, 2019 at 18:55
Where does it say that g++ is equivalent to gcc -xc++ -lstdc++ -shared-libgcc in the docs? It says only that it treats .c, .h and .i as C++ and links libstdc++ automatically. If the command posted was the case, a .txt file with valid C++ code would compile but instead returns unsupported file format error.
Sep 14, 2020 at 3:37
here if still in doubt.
Nov 21, 2021 at 4:15
@Lyn: Probably for much the same reason we don’t just use g++ with a bunch of flags instead of gcc. Ba da boom.
Mar 8, 2022 at 4:25
GCC: GNU Compiler Collection
- Referrers to all the different languages that are supported by the GNU compiler.
gcc : GNU C Compiler
g++ : GNU C++ Compiler
The main differences:
- gcc will compile: *.c\*.cpp files as C and C++ respectively.
- g++ will compile: *.c\*.cpp files but they will all be treated as C++ files.
- Also if you use g++ to link the object files it automatically links in the std C++ libraries ( gcc does not do this).
- gcc compiling C files has fewer predefined macros.
- gcc compiling *.cpp and g++ compiling *.c\*.cpp files has a few extra macros.
Extra Macros when compiling *.cpp files:
#define __GXX_WEAK__ 1 #define __cplusplus 1 #define __DEPRECATED 1 #define __GNUG__ 4 #define __EXCEPTIONS 1 #define __private_extern__ extern
3,797 9 9 gold badges 29 29 silver badges 53 53 bronze badges
answered Oct 6, 2008 at 1:55
Martin York Martin York
258k 86 86 gold badges 334 334 silver badges 562 562 bronze badges
You can link the std C++ library in gcc by passing -lstdc++ parameter.
Aug 23, 2010 at 0:13
There are more differences between ‘gcc’ and ‘g++’ than only the standard libraries, so gcc -lstdc++ will still not get you the same behavior as g++ . We put all of that language-specific behavior into its own driver for a reason, that’s what it’s there for. 🙂
Jan 28, 2013 at 21:03
My comment isn’t talking about just linking. that’s the point. Even just restricting the discussion to linking (which your answer was not), a user still won’t be able to use the entire C++ standard library by only specifying -lstdc++ , as there will be missing dependencies on math, RTTI, and exception information. Whether a given test case links or fails will depend on the operating system and which C++ features are used by the test case, which again is why all of that knowledge is built into the g++ driver instead of being left up to the user to figure out.
Jan 29, 2013 at 15:38
Trust me, we have this discussion a lot, usually when a Linux user tries to move his incomplete Makefile to another platform. 🙂 The g++ link stage does a lot more than gcc -lstdc++ on other OSes, especially when the target is an embedded platform. Fortunately, that’s why we ship a g++ in the first place.
Jan 29, 2013 at 15:40
The spec strings are constructed to be specific to the compiler, which in turn are specific to the operating system and target. So if you run -dumpspec on (for example) a cross compiler targeting an embedded system, you will see the differences. There are more than just linker differences. which again, is what your answer was about (preprocessor macros, include paths, multiple runtime libraries). We seem to be talking past each other, but as a former GCC maintainer, I assure you I am familiar with what the frontends are and are not.
Jan 29, 2013 at 17:02
For c++ you should use g++.
It’s the same compiler (e.g. the GNU compiler collection). GCC or G++ just choose a different front-end with different default options.
In a nutshell: if you use g++ the frontend will tell the linker that you may want to link with the C++ standard libraries. The gcc frontend won’t do that (also it could link with them if you pass the right command line options).
answered Oct 5, 2008 at 20:29
Nils Pipenbrinck Nils Pipenbrinck
84.1k 31 31 gold badges 152 152 silver badges 221 221 bronze badges
+1 Also my GNU/Linux gcc man page says, «When you compile C++ programs, you should invoke GCC as g++ instead.»
Oct 23, 2018 at 0:54
What is the difference between g++ and gcc ?
gcc has evolved from a single language «GNU C Compiler» to be a multi-language «GNU Compiler Collection». The term gcc may still sometimes refer to the «GNU C Compiler» in the context of C programming.
man gcc # GCC(1) GNU # # NAME # gcc - GNU project C and C++ compiler
However, g++ is the C++ compiler for the GNU Compiler Collection. Like gnat is the Ada compiler for gcc . see Using the GNU Compiler Collection (GCC)
For example, the Ubuntu 16.04 and 18.04 man g++ command returns the GCC(1) manual page.
The Ubuntu 16.04 and 18.04 man gcc states that .
g++ accepts mostly the same options as gcc
and that the default .
. use of gcc does not add the C++ library. g++ is a program that calls GCC and automatically specifies linking against the C++ library. It treats .c, .h and .i files as C++ source files instead of C source files unless -x is used. This program is also useful when precompiling a C header file with a .h extension for use in C++ compilations.
Search the gcc man pages for more details on the option variances between gcc and g++ .
Which one should be used for general c++ development?
Technically, either gcc or g++ can be used for general C++ development with applicable option settings. However, the g++ default behavior is naturally aligned to a C++ development.
The Ubuntu 18.04 ‘gcc’ man page added, and Ubuntu 20.04 continues to have, the following paragraph:
The usual way to run GCC is to run the executable called gcc , or machine-gcc when cross-compiling, or machine-gcc-version to run a specific version of GCC. When you compile C++ programs, you should invoke GCC as g++ instead.
Side Note: In the case of the Xcode.app embedded toolchain, g++ simply links to gcc . Thus, g++ invocations may vary on a per-toolchain basis.
ls -l /Applications/Xcode.app/Contents/Developer/usr/bin # … # lrwxr-xr-x 1 root wheel 3 Apr 27 2021 g++ -> gcc # -rwxr-xr-x 1 root wheel 167120 Nov 23 20:51 gcc ### -- versus -- which -a g++ # /usr/bin/g++ ls -l /usr/bin/g++ # -rwxr-xr-x 1 root wheel 137616 Jan 1 2020 /usr/bin/g++
g++ vc gcc
Сестренке в универе задала вопрос преподша: «В чем разница между g++ и gcc?» Я и коллеги курили над манами больше часа, и вот список различий:
g++ для плюсов, gcc — менеджер компиляторов.
gcc -x mail.cpp скомпилит объектный файл, который можно слинковать при помощи gcc.
Все остальные отличия сводятся к отличию между языками — включение/отключение исключений, поддержка/отключение RTTI, и т.д.
Преподавательнице мало) Я уже заинтригованный завтра пойду к тйотке в универ, мне аж интересно, чего же там такое учат студенты, что девелоперы юзающие компилеры каждый день не знаю больше различий, даже при поддержке манов.
Либо как вариант сделать diff на бинарники и исходники =)))