跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
C

Linux 下 GCC 编译入门与基础用法

综述由AI生成GCC 编译器用于将 C 语言源码转换为可执行文件。文章演示了基本编译流程,包括生成目标文件和链接成二进制文件的过程。涉及多文件编译、外部数学库 libm 的链接方法,以及 -c、-o、-l、-L、-I 等常用参数的具体用法说明。

PhpPioneer发布于 2016/7/22更新于 2026/4/256 浏览
Linux 下 GCC 编译入门与基础用法

使用 C 语言进行编译的简单实例

编写程序源代码

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

开始编译和测试执行

在默认状态下,如果直接以 gcc 编译源码且未加任何参数,生成的执行文件默认为 a.out。

./a.out

生成目标文件与指定输出名

若需生成目标文件(object file)以便后续操作,或指定执行文件名而非默认的 a.out,可使用 -o 参数。

gcc -c hello.c -o hello.o
gcc hello.o -o hello

hello.o 为目标文件,再利用该文件制作出名为 hello 的执行文件。

多文件编译与链接

当源码文件不止一个时,无法直接一次性编译,通常先生成目标文件,再链接制成二进制可执行文件。

例如 thanks.c 调用了 thanks2.c 中的函数:

// thanks.c
void func();
int main() {
    func();
    return 0;
}
// thanks2.c
void func() {
    // implementation
}

分别编译为独立的目标文件:

gcc -c thanks.c -o thanks.o
gcc -c thanks2.c -o thanks2.o

将两个目标文件链接成一个二进制可执行文件:

gcc thanks.o thanks2.o -o thanks

若更新 thanks.c,只需重新编译该文件生成新的 thanks.o,再链接即可,无需重新编译未修改的文件。

调用外部函数库

计算三角函数或指数函数需加入数学库。主程序调用 sin 函数,该函数位于 libm.so 中。编译时需显式链接该库。

gcc sin.c -lm -L/lib -L/usr/lib

参数说明:

  • -lm:链接 libm.so 函数库。
  • -L/lib -L/usr/lib:指定函数库搜索路径。Linux 默认库路径通常为 /lib 和 /usr/lib,若自定义库不在这些目录,则必须指定 -L/path。

GCC 常用参数总结

  • gcc -c:仅编译源码生成目标文件(如 .o),不进行链接。
  • gcc -o hello hello.c:指定输出文件名为 hello。
  • gcc sin.c -lm -L/lib -L/usr/lib -I/usr/include:编译时链接函数库、指定库路径及头文件目录。
    • -lm:链接 libm.so。
    • -L:函数库搜索目录。
    • -I:源码内 include 头文件目录。

目录

  1. 使用 C 语言进行编译的简单实例
  2. 编写程序源代码
  3. 开始编译和测试执行
  4. 生成目标文件与指定输出名
  5. 多文件编译与链接
  6. 调用外部函数库
  7. GCC 常用参数总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 量化入门:使用 baostock 获取分钟级 K 线数据
  • Python 网络安全攻击与防御工具实战指南
  • Stable Diffusion v1.5 Archive 与 SDXL-Lightning 生成速度与质量对比
  • Trae 集成腾讯地图 MCP 实战:让 AI 直接调用地图能力
  • MCP 插件配置指南:以 browser-tools-mcp 为例
  • 基于 Copilot 反向代理的 Claude 部署教程
  • JVM 运行时数据区域详解
  • Photoshop 集成 ComfyUI AI 绘画功能指南
  • 即梦 AI 基础操作指南:从绘图到视频生成
  • Qwen3-VL 模型 Instruct 与 Thinking 模式对比及选型指南
  • 位运算实战:位图与异或技巧解析高频算法题
  • Windows 下借助 Git Bash 安装 SDKMAN 管理 JDK 多版本
  • C++ 内存管理技巧与最佳实践
  • Android 插件化核心:动态加载外部 DEX 文件与调用详解
  • Python 数据分析:学生画像匹配与相似度计算
  • WebStorm 集成 AI 编程助手实战指南
  • 两数之和:哈希表解法
  • oicq 快速入门:从零搭建你的第一个 QQ 机器人
  • VISSIM 与 Web 交互方式
  • 大语言模型(LLM)技术报告:背景、架构与应用

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online