Чем gcc отличается от g++ (gcc vs g++?)
Модератор: Модераторы разделов
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Чем gcc отличается от g++
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 73
- ОС: KUbuntu 8.04 Hardy Heron
Re: Чем gcc отличается от g++
Здесь не нужны аргументы
И подробностей, необходимых в начале изучения, здесь тоже немного:
Gcc - компилятор для языка Си, g++ - для Си++.
Как уже вам неоднократно говорили в соседней теме, это разные языки. Только и всего. Пользуйтесь компилятором для того языка, который изучаете, и не будет вам никаких проблем. Какие-то специфические фишки того и другого компилятора понадобятся позже.
И подробностей, необходимых в начале изучения, здесь тоже немного:
Gcc - компилятор для языка Си, g++ - для Си++.
Как уже вам неоднократно говорили в соседней теме, это разные языки. Только и всего. Пользуйтесь компилятором для того языка, который изучаете, и не будет вам никаких проблем. Какие-то специфические фишки того и другого компилятора понадобятся позже.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
azrael писал(а): ↑02.03.2008 20:23Здесь не нужны аргументы
И подробностей, необходимых в начале изучения, здесь тоже немного:
Gcc - компилятор для языка Си, g++ - для Си++.
Как уже вам неоднократно говорили в соседней теме, это разные языки. Только и всего. Пользуйтесь компилятором для того языка, который изучаете, и не будет вам никаких проблем. Какие-то специфические фишки того и другого компилятора понадобятся позже.
Тогда такой вопрос. g++ и gcc - это независимые компиляторы?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 21:31
Как программы -- нет, не независимые.
Как компиляторы -- таки да, независимые, поскольку компилируют разные языки.
Медитировать над фразой "C и C++ языки разные" до полного просветления...
Тогда в чем они как программы зависимы?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Они используют общую кодовую базу. Как, например, konqueror и klines различны по предназначению, но зависимы как программы, поскольку используют ту же кодовую базу (kde и qt).
Глянь на вывод
ldd `which gcc`
и
ldd `which g++`
хохмы ради.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 21:50
Они используют общую кодовую базу. Как, например, 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"
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Различие в том, что они делают разные вещи. У меня акцент, или это эхо в помещении?
Да, можно откомпилировать с -lstdc++ Можно микроскопом забивать гвозди, а асфальтовым катком колоть орехи. Можно вообще все на ассемблере писать, и голова болеть не будет...
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 22:10
Различие в том, что они делают разные вещи. У меня акцент, или это эхо в помещении?
Да, можно откомпилировать с -lstdc++ Можно микроскопом забивать гвозди, а асфальтовым катком колоть орехи. Можно вообще все на ассемблере писать, и голова болеть не будет...
То есть наконец-то я нашел ответ на свой вопрос.
Определение:
Компилятор g++ - это компилятор gcc, дополненный библиотекой libstdc++.
Почему-то мне так сразу никто не сказал.
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 227
- ОС: Gentoo o_O
Re: Чем gcc отличается от g++
andreas90 писал(а): ↑02.03.2008 21:56Uncle_Theodore писал(а): ↑02.03.2008 21:50
Они используют общую кодовую базу. Как, например, 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 есть это ведь не превращает плеер в текстовый редактор
НЕ ПАНИКУЙ © ^_~
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Ну, еще некоторыми вещами. Херовой тучей заголовков, например. Или STL так, к слову вспоминается. Но в целом, да.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Сейчас попробую
Какими заголовками например?
Uncle_Theodore писал(а): ↑02.03.2008 22:19
Ну, еще некоторыми вещами. Херовой тучей заголовков, например. Или STL так, к слову вспоминается. Но в целом, да.
Какими заголовками например?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
-
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Всё несколько сложнее.
Реальный компилятор языка С на моей системе лежит здесь: /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++.
Реальный компилятор языка С на моей системе лежит здесь: /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++.
-
- Сообщения: 227
- ОС: Gentoo o_O
Re: Чем gcc отличается от g++
стоп пардон теперь вру я
просто когда компилировал засунул код в первый попавшийся файл, которым оказался foo.c (уж и не помню что он у меня делает) в следствии чего g++ компилил нормально и с таким расширением, а вот gcc на "syntax error" ругался поле смены расширения на *.cpp стали компилить оба
НЕ ПАНИКУЙ © ^_~
-
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 22:19
Ну, еще некоторыми вещами. Херовой тучей заголовков, например. Или STL так, к слову вспоминается. Но в целом, да.
команда gcc прекрасно подключает все С++-ные заголовки.
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Да, и что? А на асме можно написать вообще любой код, который можно написать на любом другом языке. Вывод? Ассемблер ничем не отличается от Лиспа?
Какой-то беспредметный спор, чесслово...
Можно вообще исполняемых эльфов в хексовом редакторе напрямую писать.
-
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 22:33
Да, и что? А на асме можно написать вообще любой код, который можно написать на любом другом языке. Вывод? Ассемблер ничем не отличается от Лиспа?
Какой-то беспредметный спор, чесслово...
Да никто с вами не спорит. Вы говорите, что gcc в режиме компиляции C++-кода не подключает STL-ные заголовки. Я вас поправил. Каким боком здесь оказался лисп с ассемблером, я вообще не понимаю.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 22:33
Да, и что? А на асме можно написать вообще любой код, который можно написать на любом другом языке. Вывод? Ассемблер ничем не отличается от Лиспа?
Какой-то беспредметный спор, чесслово...
Можно вообще исполняемых эльфов в хексовом редакторе напрямую писать.
Ну и кто дополнит сформулированное выше определение компилятора g++ и его отличие от gcc? Или к общему мнению не придем?
Я спрашивал вас как хороших программистов - старожилов. Вопрос темы стоит четко
Кто может подробно и аргументировано объяснить новичку и дилетанту чем gcc отличается от g++?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 131
- ОС: Arch
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Не ответ
Простите, а вы внимательно читали про gcc -o proga proga.cc -lstdc++ ?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 227
- ОС: Gentoo o_O
Re: Чем gcc отличается от g++
andreas90 писал(а): ↑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.
а то нас скоро во флейм перенесут
НЕ ПАНИКУЙ © ^_~
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Я никогда подобного не говорил. Хотя бы потому что никакого "режима компиляции C++ кода в gcc" не существует. Вся эта фраза -- полная бессмыслица.
Тем, что они компилируют с разных языков. Какие еще Вам аргументы нужны? Предназначением они различаются. Все остальные Ваши "определения" и "объяснения" -- набор слов и самообман.
Вот Вам пример забавный.
Код: Выделить всё
#include<stdio.h>
int main(){
int b = sizeof('b');
if(b==4) printf("I'm a C program!\n");
else printf("I'm a C++ program!\n");
return 0;
}
Скомпилируйте его gcc'ём и прогоните, а потом скомпилируйте g++'ом и прогоните.
А мне надоело из пустого в порожнее переливать.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Просмотрел я эту ссылку
http://ru.wikipedia.org/wiki/GNU_Compiler_Collection
Там не сказано четко чем gcc отличается от g++.
Тем более что тогда получается что gcc- набор компиляторов, а g++ это часть gcc и отдельного компилятора g++ не существует.
Я жду точного полного и аргументированного определения. Понимаете, нет четкости терминологии, и это приводит к путанице.
G++ это - ......
Отличается от gcc :
1.
2.
.
.
.
n
Пока большинство объяснений напоминает мне диалог.
" Что такое производная?"
" Ну это например когда икс квадрат взять производную будет два икс
" А чем она отличается от дифференциала?
" Ну это когда берешь производную и умножаешь на дельта икс"
Вот и в итоге четкой терминологии нет. Хотя она существует
Странно, я думал программисты это знают
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"
-
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 22:56никакого "режима компиляции C++ кода в gcc" не существует. Вся эта фраза -- полная бессмыслица.
gcc это front-end к коллекции компиляторов. Он умеет компилировать код на языках С, С++, Fortran, Ada, и др. Где вы тут увидели бессмыслицу, мне остаётся только гадать.
Вот Вам пример забавный.
Код: Выделить всё
#include<stdio.h> int main(){ int b = sizeof('b'); if(b==4) printf("I'm a C program!\n"); else printf("I'm a C++ program!\n"); return 0; }
Скомпилируйте его 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++. Чудеса да и только.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑02.03.2008 22:56
Я никогда подобного не говорил. Хотя бы потому что никакого "режима компиляции C++ кода в gcc" не существует. Вся эта фраза -- полная бессмыслица.
Тем, что они компилируют с разных языков. Какие еще Вам аргументы нужны? Предназначением они различаются. Все остальные Ваши "определения" и "объяснения" -- набор слов и самообман.
Вот Вам пример забавный.
Код: Выделить всё
#include<stdio.h> int main(){ int b = sizeof('b'); if(b==4) printf("I'm a C program!\n"); else printf("I'm a C++ program!\n"); return 0; }
Скомпилируйте его gcc'ём и прогоните, а потом скомпилируйте g++'ом и прогоните.
А мне надоело из пустого в порожнее переливать.
Скомпилил и gcc и g++ компилит и gcc с ключом -lstdc++ все идет. Если вы про ++ то это ничего не объясняет, не ответ на вопрос
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Хорошо, последний раз попробую до Вас достучаться.
g++ -- это программа для компиляции кода на C++. Да, команду gcc с определенными извратами можно заставить компилировать C++ код. Но команда g++ специально для этого предназначена, и использовать следует именно ее.
man gcc
Если после всего этого Вы опять скажете, что у Вас путаница, и Вам не хватает ясности по пунктам, я решу, что Вы надо мной издеваетесь.
g++ -- это программа для компиляции кода на C++. Да, команду gcc с определенными извратами можно заставить компилировать C++ код. Но команда g++ специально для этого предназначена, и использовать следует именно ее.
man gcc
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.
Если после всего этого Вы опять скажете, что у Вас путаница, и Вам не хватает ясности по пунктам, я решу, что Вы надо мной издеваетесь.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑03.03.2008 00:09Хорошо, последний раз попробую до Вас достучаться.
g++ -- это программа для компиляции кода на C++. Да, команду gcc с определенными извратами можно заставить компилировать C++ код. Но команда g++ специально для этого предназначена, и использовать следует именно ее.
man gcc
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++ и др))) так? Я вас правильно понял?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 230
- ОС: MSDOS 3.3
Re: Чем gcc отличается от g++
Uncle_Theodore писал(а): ↑03.03.2008 00:09g++ -- это программа для компиляции кода на C++. Да, команду gcc с определенными извратами можно заставить компилировать C++ код.
Путаетесь в показаниях, дядя. Сначала вы категорически заявляли что gcc не может компилировать С++ программы, теперь соглашаетесь что, с извратами (по вашему выражению) таки да, может.
А что, если gcc "с извратами" заставить компилить С++ программу, то он какой-то неправильный код создаст?
g++ is a program that calls GCC with the default language set to C ++ , and automatically specifies linking against the C ++ library.
Эта фраза вообще интересна. Получается что g++ при своей работе вызывает gcc с определёнными настройками. Это значит что g++ не самостоятельна, и без gcc не может работать?
Интересно, если попробовать на время "спрятать" gcc, то как будет вести себя g++, сможет ли он компилить самостоятельно.
Если после всего этого Вы опять скажете, что у Вас путаница, и Вам не хватает ясности по пунктам, я решу, что Вы надо мной издеваетесь.
Нет, это вы издеваетесь, это вам не хватает ясности.
Путь линуксоида очень напоминает путь воина, главными особенностями которого являются ответственность и самодисциплина. Но и награды этого пути достойны: это свобода и мастерство.
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Чем gcc отличается от g++
Чушь собачья. Никогда ничего подобного я не говорил. Я говорил, что она для этого не предназначена.
В общем, мне эта тема надоела. Если б у кого-то здесь был действительно серьезный вопрос, можно было бы пытаться на него ответить. А в упражнениях в софистике и словоблудии мне участия принимать не хочется. Спросите у Промова, он вам расскажет.