C компилятор для Mac?

Я работаю над текстом о ссылках и хотел бы поработать с некоторыми примерами в упомянутом тексте.

Чтобы лучше понять, что происходит, когда я призываю gcc водитель, я пытался сделать всю компиляцию старой школы вручную;

  • предварительная обработка с использованием cpp
  • составление с cc1
  • сборка с as
  • связывание с использованием ld

К сожалению, на моем Mac я не могу ссылаться cc1напрямую (нет списка cc1 в man). Какие у меня варианты?

2 ответа

Решение

Прочитайте некоторый материал о внутренностях GCC. Сначала википейдж на GCC. Затем вы можете поиграть с MELT-зондом (возможно, вы захотите использовать систему Linux). Затем прочитайте руководство GCC. И GCC ресурсный центр

использование gcc -v -Wall скомпилировать, покажет что cc1 работает (и -Wall всегда полезно). Так что попробуйте скомпилировать с gcc -v -Wall hello.c -o helloworld.bin

cc1 программа не сидит в вашем PATH или в /usr/bin/ но по моей системе /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1

Команда gcc -print-prog-name=cc1 скажу вам, какой cc1 используется вашим gcc, Посмотрите варианты отладки GCC для больше.

Предварительная обработка теперь внутри cc1,

gcc Программа просто драйвер, начиная cc1 (который выполняет большую часть работы по компиляции), затем as, ld так далее...

Сайт MELT содержит некоторую документацию и несколько слайдов, объясняющих GCC, которые вы могли бы найти интересными. MELT - это предметно-ориентированный язык для расширения GCC.

Смотрите также рисунок на http://starynkevitch.net/Basile/gcc-melt/cc1-internals.svg и рисунок ниже.

http://starynkevitch.net/Basile/gcc-melt/gcc-MELT-inside.png

фотография с http://starynkevitch.net/Basile/gcc-melt/gcc-MELT-inside.png, сделанная мной, CC BY SA

cc1 производит .s сборочный файл; as (начато gcc) превращает его в .o, ld компоновщик (начатый gcc) создаст библиотеку или исполняемый файл.

PS. У меня есть система Linux, но на MacOSX все очень похоже.

ссылка на ссылку

Хорошая книга о связывании - это книга Levine's Linkers & loaders.

Для справки, я установил gcc-10 with brew на свою macOS (Catalina).

Хотя он не доступен напрямую (через PATH), его можно найти в

      /usr/local/Cellar/gcc/10.2.0/libexec/gcc/x86_64-apple-darwin19/10.2.0

Если ты заблудился, попробуй gcc -v и из подробной информации вы можете найти, где ваш cc1 является.

Другие вопросы по тегам