компилятор "g ++" и "c ++" - PullRequest
       28

компилятор "g ++" и "c ++"

48 голосов
/ 11 ноября 2009

Я только что обнаружил в моем Ubuntu два разных компилятора C ++: / usr / bin / g ++ и / usr / bin / c ++. Я не знаком с последним, но man c ++ просто переходит на man-страницу gcc. Интересно, чем они отличаются как компиляторы C ++?

Ответы [ 4 ]

50 голосов
/ 11 ноября 2009

Это типичный хаос в Ubuntu.

Если вы ls -l /usr/bin/c++, вы увидите, что это на самом деле символическая ссылка. чтобы:

/etc/alternatives/c++

Что, в свою очередь, также является символической ссылкой на:

/usr/bin/g++

Итак, в системах Ubuntu c ++ равен g ++. Причиной косвенной ссылки является то, что существует несколько пакетов, которые могут предоставить компилятор c ++ (например, разные версии g ++). Вы увидите это много на Ubuntu. Например, qmake - это ссылка на файл в / etc / alternatives, которая (в моей системе) является ссылкой на /usr/bin/qmake-qt3.

.
27 голосов
/ 27 июня 2012

c++ - стандартное имя компилятора C++ в системе.

В системе GNU почти наверняка установлена ​​GCC (коллекция компиляторов GNU), которая включает в себя C++ компилятор с именем g++ ('g' для GNU). Но чтобы быть POSIX-совместимым, они устанавливают этот компилятор также как c++, иногда c++ является символической ссылкой на g++, иногда это жесткая ссылка, иногда это просто один и тот же файл, установленный дважды.

Это не относится к другим системам, таким как FreeBSD или NetBSD. Возможно, на этих системах не установлен GCC (и другие компоненты GNU).

В моей системе эти два файла просто идентичны:

% diff `which c++` `which g++`
% echo $?
0

Это означает, что c++ по крайней мере вызывает один и тот же компилятор, но теоретически он может по-разному интерпретировать некоторые параметры командной строки или иметь другие значения по умолчанию. Кто-то с большим знанием может свободно ответить на этот вопрос.

11 голосов
/ 11 ноября 2009

На моей машине c++ есть ссылка:

$ readlink /usr/bin/c++
/etc/alternatives/c++
$ readlink /etc/alternatives/c++
/usr/bin/g++

То есть c++ это просто ссылка на g++.

3 голосов
/ 11 ноября 2009

g ++ - это компилятор gnu c ++, где c ++ - системный компилятор c ++, в случае ubuntu C ++ - это ссылка на g ++, однако в другой системе это вполне может быть ссылка на компилятор не gcc. как кто-то еще сказал, vi против vim. то, что в системе существует ссылка на vi, не означает, что vim может быть любым клоном vi.

...