linux写c语言程序

99ANYc3cd6
预计阅读时长 23 分钟
位置: 首页 C语言 正文

目录

  1. 第一部分:环境准备

    linux写c语言程序
    (图片来源网络,侵删)
    • 1 选择一个文本编辑器
    • 2 安装编译器 (GCC)
    • 3 终端/命令行基础
  2. 第二部分:你的第一个 C 程序 "Hello, World!"

    • 1 编写代码
    • 2 编译代码
    • 3 运行程序
    • 4 解释编译过程
  3. 第三部分:核心概念与常用工具

    • 1 Makefile:自动化编译
    • 2 GDB:强大的调试器
    • 3 Valgrind:内存错误检测器
  4. 第四部分:项目管理

    1 使用 Git 进行版本控制

    linux写c语言程序
    (图片来源网络,侵删)
  5. 第五部分:进阶学习资源


第一部分:环境准备

1 选择一个文本编辑器

你需要一个工具来编写 C 源代码文件(.c 文件),Linux 上有很多优秀的选择:

  • Vim / Neovim: 强大的命令行编辑器,高效但学习曲线较陡。
  • Emacs: 另一个传奇的命令行编辑器,功能极其丰富。
  • VS Code (Visual Studio Code): 现代、免费、开源,拥有出色的插件支持(如 C/C++ 扩展),非常适合初学者和专业人士。
  • GNOME Text Editor / Kate: 简单易用的图形化文本编辑器。

推荐: 对于初学者,VS Code 是一个绝佳的选择,它界面友好,功能强大,且集成了终端,方便你一站式完成编码和编译。

2 安装编译器 (GCC)

C 语言是编译型语言,需要编译器将你的源代码转换成机器可以执行的可执行文件,在 Linux 上,最常用的编译器是 GCC (GNU Compiler Collection)

打开你的终端,运行以下命令来检查 GCC 是否已安装:

gcc --version

如果已经安装,你会看到 GCC 的版本信息,如果没有,你需要安装它,根据你的 Linux 发行版,使用相应的包管理器:

对于 Debian / Ubuntu / Mint 系统:

sudo apt update
sudo apt install build-essential

build-essential 是一个元数据包,它会自动安装 GCC、GDB 和其他必要的构建工具。

对于 Fedora / CentOS / RHEL 系统:

sudo dnf groupinstall "Development Tools"

或者直接安装 gcc:

sudo dnf install gcc

对于 Arch Linux 系统:

sudo pacman -S base-devel

3 终端/命令行基础

你需要熟悉一些基本的 Linux 命令来操作文件和目录:

  • ls: 列出当前目录下的文件和文件夹。
  • cd <目录名>: 切换到指定目录。
  • pwd: 显示当前所在的完整路径。
  • mkdir <目录名>: 创建一个新的目录。
  • touch <文件名>: 创建一个新文件。
  • cp <源文件> <目标文件>: 复制文件。
  • mv <源文件> <目标文件>: 移动或重命名文件。
  • rm <文件名>: 删除文件。
  • clear: 清空终端屏幕。

第二部分:你的第一个 C 程序 "Hello, World!"

这是所有编程语言的经典入门程序。

1 编写代码

  1. 打开终端,创建一个工作目录(c_projects),并进入它。

    mkdir c_projects
    cd c_projects
  2. 使用你选择的文本编辑器创建一个名为 hello.c 的文件。

    # 如果你使用 VS Code
    code hello.c
    # 如果你使用 Vim
    vim hello.c
  3. hello.c 文件中输入以下代码:

    #include <stdio.h> // 引入标准输入输出库
    int main() {
        // printf 函数用于在控制台打印文本
        printf("Hello, World!\n");
        // main 函数返回 0 表示程序成功执行完毕
        return 0;
    }
    • #include <stdio.h>: 告诉编译器在编译前要包含 stdio.h 这个头文件,因为这个文件里定义了 printf 函数。
    • int main(): 这是 C 程序的入口函数,程序从这里开始执行。
    • printf(...): 一个函数,用于在屏幕上显示字符串。
    • \n: 一个换行符。
    • return 0;: 表示程序正常退出。

2 编译代码

保存文件后,回到终端,使用 gcc 命令来编译 hello.c

gcc hello.c -o hello
  • gcc: 调用 GCC 编译器。
  • hello.c: 你的源文件。
  • -o hello: 这是一个选项,-o 后面跟着你希望生成的可执行文件的名称,如果不写 -o,GCC 默认会生成一个名为 a.out 的文件。

3 运行程序

编译成功后,你会看到当前目录下多了一个名为 hello 的文件(没有扩展名),这就是你的可执行程序,运行它:

./hello
  • 是当前目录的缩写,在 Linux 中,直接输入程序名(如 hello)可能找不到程序,因为它不在系统的 PATH 环境变量中。./hello 明确告诉 shell 在当前目录下查找并执行 hello 程序。

你应该会在终端看到输出:

Hello, World!

4 解释编译过程

当你运行 gcc hello.c -o hello 时,GCC 实际上在后台执行了几个步骤:

  1. 预处理: 处理 #include 等预处理指令,生成一个 .i 文件。
  2. 编译: 将预处理后的代码翻译成汇编代码,生成一个 .s 文件。
  3. 汇编: 将汇编代码翻译成机器码,生成一个 .o 文件(目标文件)。
  4. 链接: 将你的目标文件和它所依赖的库文件(如 stdio.h 对应的库)链接在一起,生成最终的可执行文件。

你可以使用 -v (verbose) 选项来查看完整的编译过程:

gcc -v hello.c -o hello

第三部分:核心概念与常用工具

1 Makefile:自动化编译

当你的项目只有一个文件时,直接用 gcc 很方便,但当一个项目包含几十甚至上百个 .c 文件时,手动编译就会变得非常繁琐和容易出错。Makefile 就是为此而生的。

Makefile 定义了一系列的规则,告诉 make 工具如何编译和链接你的项目。

示例项目结构:

my_project/
├── main.c
├── utils.c
└── utils.h
  • utils.h (头文件):

    #ifndef UTILS_H
    #define UTILS_H
    int add(int a, int b);
    #endif
  • utils.c (源文件):

    #include "utils.h"
    int add(int a, int b) {
        return a + b;
    }
  • main.c (主程序):

    #include <stdio.h>
    #include "utils.h"
    int main() {
        int result = add(5, 3);
        printf("The result is: %d\n", result);
        return 0;
    }

创建 Makefile:

my_project 目录下创建一个名为 Makefile 的文件(注意没有扩展名),并写入以下内容:

# 定义变量
CC = gcc
CFLAGS = -Wall -g
TARGET = my_program
SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)
# 默认目标:当只输入 make 时,会执行这个目标
all: $(TARGET)
# 链接规则:如何生成最终的可执行文件
$(TARGET): $(OBJS)
    $(CC) $(OBJS) -o $(TARGET)
# 编译规则:如何从 .c 文件生成 .o 文件
# 这是一个隐式规则,make 会自动应用
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
# 清理规则:删除所有生成的文件
clean:
    rm -f $(OBJS) $(TARGET)
# .PHONY 表示这些目标不是文件,只是一个命令
.PHONY: all clean

使用 Makefile:

  1. 编译项目:

    make

    你会看到 make 自动调用了 gcc 来编译 .c 文件,然后链接它们。

  2. 运行程序:

    ./my_program

    输出:

    The result is: 8
  3. 清理项目:

    make clean

    这会删除所有 .o 文件和最终的可执行文件,让目录恢复到初始状态。

  • CC = gcc: 定义一个变量 CC 代表编译器。
  • CFLAGS = -Wall -g: 定义编译选项。-Wall 显示所有警告,-g 包含调试信息。
  • $(TARGET): 变量展开,值为 my_program
  • $(SRCS:.c=.o): 这是一个神奇的文本替换,它会把 SRCS 中的 .c 替换成 .o,得到 main.o utils.o
  • all: $(TARGET): 定义 all 依赖于 my_programmake 会先去构建 my_program
  • $(TARGET): $(OBJS): 定义 my_program 依赖于 main.outils.o
  • %.o: %.c: 这是一个模式规则,告诉 make 如何从任何 .c 文件生成对应的 .o 文件。
  • $< 和 : 这是自动变量。$< 代表第一个依赖文件(这里是 %.c), 代表目标文件(这里是 %.o)。

2 GDB:强大的调试器

当程序出现逻辑错误时,printf 调试法效率低下,GDB (GNU Debugger) 可以让你单步执行代码、设置断点、查看变量值等。

步骤:

  1. -g 选项编译程序,确保包含调试信息。

    gcc -g main.c -o my_program
  2. 启动 GDB,并加载你的可执行文件。

    gdb ./my_program
  3. 在 GDB 中常用命令:

    • (gdb) break main(gdb) b main: 在 main 函数入口处设置一个断点。
    • (gdb) run(gdb) r: 运行程序,程序会在断点处暂停。
    • (gdb) next(gdb) n: 执行下一行代码(不进入函数内部)。
    • (gdb) step(gdb) s: 执行下一行代码(如果遇到函数,会进入函数内部)。
    • (gdb) print <变量名>(gdb) p <变量名>: 打印某个变量的当前值。
    • (gdb) continue(gdb) c: 继续运行程序,直到下一个断点或程序结束。
    • (gdb) list(gdb) l: 显示源代码。
    • (gdb) quit(gdb) q: 退出 GDB。

3 Valgrind:内存错误检测器

C 语言中最头疼的问题之一就是内存管理错误,如内存泄漏、访问未初始化的内存、越界访问等,Valgrind 是一个强大的工具,可以帮助你发现这些问题。

步骤:

  1. 编译程序(无需 -g,但推荐使用,Valgrind能给出更精确的行号)。

    gcc -g main.c -o my_program
  2. 使用 Valgrind 运行程序

    valgrind --leak-check=full ./my_program
    • --leak-check=full: 启用详细的内存泄漏检测。

Valgrind 的输出会非常详细,它会精确地指出在哪一行代码发生了内存泄漏、非法内存访问等错误,这对于编写健壮的 C 程序至关重要。


第四部分:项目管理

对于任何非 trivial 的项目,都应该使用版本控制系统。Git 是目前最主流的分布式版本控制系统。

  1. 安装 Git:

    # Debian/Ubuntu
    sudo apt install git
    # Fedora
    sudo dnf install git
  2. 配置 Git (首次使用时):

    git config --global user.name "Your Name"
    git config --global user.email "your.email@example.com"
  3. 基本工作流:

    • git init: 在项目目录中初始化一个 Git 仓库。
    • git add .: 将所有文件添加到暂存区。
    • git commit -m "Initial commit": 提交更改,并附上描述信息。
    • git status: 查看仓库当前状态。
    • git log: 查看提交历史。

你可以将代码推送到 GitHub、Gitee 等平台,实现代码的备份、协作和分享。


第五部分:进阶学习资源

  • 书籍:

    • 《C Primer Plus (第6版)》: 经典的 C 语言入门书籍,内容详尽。
    • 《C程序设计语言 (The C Programming Language, K&R)》: C 语言之父写的书,简短精炼,适合有一定基础后阅读。
    • 《C陷阱与缺陷》: 深入讲解 C 语言中常见的坑和最佳实践。
  • 在线资源:

    • cppreference.com: 虽然是 C++ 的参考,但其 C 语言部分非常权威和准确,是查阅标准库和语法细节的绝佳网站。
    • Linux System Programming: 如果你希望深入理解 Linux 系统底层,这本书是必读的。
    • GitHub: 阅读优秀的开源 C 项目源码(如 curl, neovim, htop 等)是学习最佳实践的最好方式。

希望这份指南能帮助你顺利开始在 Linux 上进行 C 语言编程!祝你编程愉快!

-- 展开阅读全文 --
头像
c语言 eof等于多少
« 上一篇 今天
织梦农家乐模板好用吗?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]