Невозможно скомпилировать Hello World - PullRequest
0 голосов
/ 20 января 2019

Извините, если это повторный вопрос, но я не смог найти ответ, который сработал.

Я пишу программу Hello World C впервые за долгое время. Я вполне уверен, что код верен, но он не скомпилируется.

Работает MAC OS 10.13.6, и я только что скачал XCode на прошлой неделе. Программа компилируется в объектный файл, используя

cc -c test.c -o test.o

без проблем. Однако я не могу создать исполняемый файл, используя

cc test.o -o test

Вот код:

#include <stdio.h>
int Main()
{
    printf("Hello World");
    return 0;
}

Когда я иду, чтобы создать исполняемый файл, я получаю

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64

Полагаю, мне нужно добавить некоторые флаги компилятора, но я не могу понять, какие из них.

1 Ответ

0 голосов
/ 20 января 2019

Звучит так, будто вы только начинаете свое путешествие в коде c. Это прекрасная возможность узнать о c, компиляции и компоновке.

То, что вы написали, может очень хорошо скомпилироваться в объектный файл (содержащий функцию Main ()). Однако для связи с исполняемым файлом, который может запускаться из вашей ОС, вам необходимо определить точку входа, которая должна быть функцией с именем main (с учетом регистра, как упоминал Джон выше).

Проверьте этот ресурс: http://www.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html для объяснения того, что компилятор gcc делает за кулисами.

Вам просто нужно внести пару небольших изменений, чтобы ваш код работал должным образом:

#include <stdio.h>

int main(void) {
    printf("Hello, world!\n");
    return 0;
}
...