你知道吗?90%的人不知道的真相?

前提条件

  1. 安装GCC编译器
    Linux默认不包含C编译器,需安装GCC(GNU Compiler Collection):

    sudo apt update && sudo apt install gcc  # Debian/Ubuntu
    sudo yum install gcc                    # CentOS/RHEL

    验证安装:gcc --version(输出版本信息即成功)

  2. 准备文本编辑器
    选择任意编辑器编写代码(如Vim、Nano或VS Code):

    nano hello.c  # 使用Nano创建文件

编写C程序

创建.c源文件(示例:hello.c):

    printf("Hello, Linux!\n");
    return 0;
}

保存文件并退出编辑器。


编译程序:源码 → 可执行文件

使用gcc将C源码编译为机器可执行文件:

gcc hello.c -o hello
  • 关键参数解析
    • hello.c:源文件名
    • -o hello:指定输出文件名(hello为自定义可执行文件名)
    • 无错误时生成无后缀的二进制文件hello

编译过程详解

  1. 预处理:展开头文件与宏(gcc -E hello.c -o hello.i
  2. 编译:生成汇编代码(gcc -S hello.i -o hello.s
  3. 汇编:转为机器指令(gcc -c hello.s -o hello.o
  4. 链接:合并库函数生成可执行文件(gcc hello.o -o hello

运行程序

  1. 直接执行
    通过路径运行编译后的文件:

    ./hello  # 输出:Hello, Linux!

    注意:若提示Permission denied,需添加执行权限:

    chmod +x hello
  2. 脚本化运行(可选)
    创建Shell脚本(如run.sh)自动化流程:

    #!/bin/bash
    gcc hello.c -o hello && ./hello

    赋予执行权限:chmod +x run.sh,运行:./run.sh


调试与常见问题

  1. 编译错误处理
    若编译报错(如语法错误),GCC会提示具体行号:

    hello.c: In function ‘main’:
    hello.c:3:5: error: expected ‘;’ before ‘return’
  2. 使用GDB调试
    安装GDB:sudo apt install gdb
    编译时加入调试信息:

    gcc -g hello.c -o hello_debug

    启动调试:gdb ./hello_debug → 使用break main设断点 → run执行

  3. 常见问题

    • 找不到stdio.h:安装开发库 sudo apt install build-essential
    • 执行权限不足chmod +x 文件名
    • 路径错误:确认终端当前路径与文件位置一致

进阶操作

  1. 多文件编译
    同时编译多个.c文件:

    gcc file1.c file2.c -o program
  2. 优化代码
    添加编译优化选项(如-O2):

    gcc -O2 hello.c -o hello_fast
  3. 静态链接库
    链接静态库(.a文件):

    gcc main.c -lmy_library -L/path/to/lib -o static_app

总结流程

graph LR
    A[编写hello.c] --> B[gcc hello.c -o hello]
    B --> C[./hello]
    C --> D[输出结果]

通过以上步骤,你已掌握在Linux中执行C程序的核心方法,实践建议:从简单程序开始,逐步尝试多文件项目和外部库调用,以深入理解编译原理和系统交互。

引用说明

  • GNU官方文档(GCC手册)
  • Linux man-pages (man gcc查看本地手册)
  • 《C程序设计语言》(K&R)基础语法参考
  • 调试技巧参考GDB官方教程(https://sourceware.org/gdb/)

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8051.html

(0)
酷番叔酷番叔
上一篇 1天前
下一篇 1天前

相关推荐

  • Linux如何保存网页到本地文件?

    图形界面操作(推荐普通用户)方法1:浏览器直接保存打开浏览器(如Firefox/Chrome)访问目标网页(https://example.com),右键菜单保存在页面空白处右键 → 选择 “另存为”(Firefox)或 “另存为…”(Chrome),或按快捷键 Ctrl+S(通用快捷键),选择保存格式完整……

    2025年7月7日
    900
  • 如何安全安装Linux测试版内核?,dnf安装测试内核?新手必看指南,升级内核,sudo dnf install kernel-test详解,想尝鲜Linux测试内核?这条命令搞定

    在Linux系统中安装内核包是系统维护和升级的关键操作,常用于修复安全漏洞、支持新硬件或优化性能,以下为详细指南,涵盖主流发行版的安装方法及注意事项,操作前请务必备份重要数据,安装前的准备工作检查当前内核版本终端执行: uname -r # 示例输出:5.15.0-86-generic备份数据使用 rsync……

    2025年6月20日
    1100
  • 为什么你还在用传统命令替代方案?

    在Linux系统中配置网卡是网络管理的基础操作,无论是服务器维护还是个人电脑使用都至关重要,以下将详细讲解命令行和图形界面两种配置方式,涵盖静态IP、动态IP(DHCP)及常见问题解决,确保步骤清晰、安全可靠,命令行配置(推荐服务器使用)查看当前网卡信息ip addr show # 或使用旧命令 ifconfi……

    2025年6月24日
    1300
  • Linux查看进程有哪些高效方法?

    基础命令:ps(进程状态)最常用的进程查看工具,功能强大且预装在所有 Linux 发行版,常用组合:ps aux # 查看所有用户进程(BSD风格)ps -ef # 查看所有进程(标准UNIX风格)输出列解读:USER:进程所有者PID:进程ID(唯一标识)%CPU/%MEM:CPU/内存占用率VSZ:虚拟内存……

    2025年7月8日
    900
  • 安装软件时如何自动确认?

    安装软件时自动确认功能允许用户预设同意所有安装步骤,无需手动点击,此功能适用于批量部署或无人值守安装场景,通过静默模式自动完成软件安装过程,显著提升效率并减少人工干预。

    2025年7月5日
    1200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信