Подтвердить что ты не робот

Компилятор "g++" и "С++"

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

4b9b3361

Ответ 1

Это типичный хаос символической ссылки Ubuntu.

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

/etc/alternatives/c++

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

/usr/bin/g++

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

Ответ 2

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++ по крайней мере вызывает один и тот же компилятор, но теоретически он может интерпретировать некоторые параметры командной строки по-разному или иметь разные значения по умолчанию. Кто-то, у кого больше знаний, может свободно распространять ответ в этом отношении.

Ответ 3

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

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

So c++ - это просто ссылка на g++.

Ответ 4

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