Переносимое имя компилятора C++ (и компоновщика)

Переносимое имя компилятора C++ (и компоновщика)

cc — это POSIX-имя компилятора C. Есть ли общее имя компилятора C++ (и компоновщика). Обратите внимание, что g++также добавляются некоторые библиотеки, которые не будут включены при использовании простого gcc или ld.

решение1

Интерфейс компилятора POSIX C — этосейчасc99; ccшироко доступен, но не гарантирован. POSIX не определяет ничего, связанного с C++, поэтому вы не найдете там стандартизированной команды для вызова компилятора и компоновщика C++.

Обычная практика (см. напримерGNU-создание) заключается в том, чтобы полагаться на переменные CCи CXX. В случае GNU значения по умолчанию для них ccи g++соответственно; BSD, как правило, используют ccи c++(см. напримерКонфигурация OpenBSD). Доступ к компоновщику осуществляется через драйвер компилятора и не вызывается явно.

решение2

Что касается Linux, то большинство Makefile, которые я видел за последние два десятилетия, не используют ничего, кроме gcc/ g++. Когда кто-то удосуживается использовать настоящий компоновщик, а не GCC, они обычно указывают ld. Я видел cc, может быть, один раз.

Большинство дистрибутивов Linux предоставляют символическую ссылку с ccна , gccно этого не произойдет, если вы удалите GCC и установите вместо него clang.

Не знаю, переносимо ли это, так как, например, FreeBSD недавно перешла на Clang/LVM, другие BSD продолжают использовать GCC, Mac OS также использует Clang. У Android есть свой собственный набор инструментов.

Я не пользовался другими Unix-системами, поэтому без комментариев.

Какой у вас вариант использования? Отредактируйте свой вопрос и предоставьте больше подробностей.

Связанный контент