Я просто просматривал исходные файлы gcc. В gcc.c я нашел что-то вроде
extern int main (int, char **);
int
main (int argc, char **argv)
{
Теперь мое сомнение extern заключается в том, чтобы сообщить компилятору, что конкретная функция не находится в этом файле, но будет найдена где-то еще в проекте. Но здесь определение main происходит сразу после объявления extern. Какая цель заключается в объявлении extern?
Похоже, в этом конкретном примере extern, похоже, ведет себя как export, который мы используем в сборке, при этом мы экспортируем конкретный символ вне модуля
Любые идеи?