HelloWorld

概要

# 简介
要编写一个 C 语言的程序,首先需要有一个 gcc 的环境,gcc 是用来编译 C 语言的工具,它将我们用自然语言编写的程序转换为机器码,然后执行。
其中 gcc 环境一般在 Linux 系统,MacOS 系统都默认集成,Windows 则需要自行安装。
# 环境
    MacOS 10.15.5
    gcc: Apple clang version 11.0.3 (clang-1103.0.32.62)
步骤

1、新建一个叫 helloworld.c 的文本文件,并加入如下内容
#include<stdio.h>
int main()
{
    printf("Hello World");
    return 0;
}
注:文件的后缀必须是 .c
2、运行
# 方法一:使用 gcc 默认方式编译
使用默认方式编译会直接在当前目录生成一个可执行的 a.out 文件,使用 ./a.out 即可执行
➜  /tmp gcc helloworld.c
➜  /tmp ll
-rwxr-xr-x   1 jiangzhuolin  wheel  12556 Jun 22 11:12 a.out*
-rw-r--r--   1 jiangzhuolin  wheel     76 Jun 22 10:57 helloworld.c
➜  /tmp ./a.out       
Hello World%  
# 方法二:分步骤编译
1、预编译
➜  /tmp gcc -E helloworld.c -o helloworld.i
➜  /tmp ll
-rwxr-xr-x   1 jiangzhuolin  wheel  12556 Jun 22 11:12 a.out*
-rw-r--r--   1 jiangzhuolin  wheel     76 Jun 22 10:57 helloworld.c
-rw-r--r--   1 jiangzhuolin  wheel  27818 Jun 22 11:26 helloworld.i
2、编译
➜  /tmp gcc -S helloworld.i -o helloworld.s
➜  /tmp ll
-rw-r--r--   1 jiangzhuolin  wheel     76 Jun 22 10:57 helloworld.c
-rw-r--r--   1 jiangzhuolin  wheel  27818 Jun 22 11:26 helloworld.i
-rw-r--r--   1 jiangzhuolin  wheel    774 Jun 22 13:18 helloworld.s
3、汇编
/tmp  gcc -c helloworld.s -o helloworld.o
➜  /tmp ll
-rw-r--r--   1 jiangzhuolin  wheel     76 Jun 22 10:57 helloworld.c
-rw-r--r--   1 jiangzhuolin  wheel  27818 Jun 22 11:26 helloworld.i
-rw-r--r--   1 jiangzhuolin  wheel    776 Jun 22 13:21 helloworld.o
-rw-r--r--   1 jiangzhuolin  wheel    774 Jun 22 13:18 helloworld.s
4、生成可执行文件 
➜  /tmp gcc -o helloworld helloworld.o
➜  /tmp ll
-rwxr-xr-x   1 jiangzhuolin  wheel  12556 Jun 22 13:22 helloworld*
-rw-r--r--   1 jiangzhuolin  wheel     76 Jun 22 10:57 helloworld.c
-rw-r--r--   1 jiangzhuolin  wheel  27818 Jun 22 11:26 helloworld.i
-rw-r--r--   1 jiangzhuolin  wheel    776 Jun 22 13:21 helloworld.o
-rw-r--r--   1 jiangzhuolin  wheel    774 Jun 22 13:18 helloworld.s
# 方法三:一步编译并生成可执行文件
 
➜  /tmp gcc helloworld.c -o helloworld
附录

gcc 的编译过程
https://www.cnblogs.com/guanghma/p/11752723.html
https://blog.csdn.net/gt1025814447/article/details/80442673
https://blog.csdn.net/wuxing26jiayou/article/details/96503574

You may also like...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注