无法编译 Hello World
Unable to compile Hello World
抱歉,如果这是一个重复的问题,但我找不到有效的答案。
我很长时间以来第一次编写 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
我猜我需要添加一些编译器标志,但不知道是哪些。
听起来您的 C 代码之旅才刚刚开始。这是学习 c、编译和 linking 的绝好机会。
您编写的内容可以很好地编译成目标文件(包含一个名为 Main() 的函数)。但是,要从 OS link 进入一个可以 运行 的可执行文件,您需要定义一个入口点,该入口点被假定为一个名为 main 的函数(区分大小写,如 John 上面提到的) .
查看此资源: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;
}
Main
需要小写main
。
- 虽然
int main()
可行,但 int main(void)
在技术上更准确(请参阅
void main(void) vs main())
- 你可能想要在 Hello, world! 之后换行,所以添加
\n
。 (https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm)
抱歉,如果这是一个重复的问题,但我找不到有效的答案。
我很长时间以来第一次编写 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
我猜我需要添加一些编译器标志,但不知道是哪些。
听起来您的 C 代码之旅才刚刚开始。这是学习 c、编译和 linking 的绝好机会。
您编写的内容可以很好地编译成目标文件(包含一个名为 Main() 的函数)。但是,要从 OS link 进入一个可以 运行 的可执行文件,您需要定义一个入口点,该入口点被假定为一个名为 main 的函数(区分大小写,如 John 上面提到的) .
查看此资源: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;
}
Main
需要小写main
。- 虽然
int main()
可行,但int main(void)
在技术上更准确(请参阅 void main(void) vs main()) - 你可能想要在 Hello, world! 之后换行,所以添加
\n
。 (https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm)