gcc编译一个c文件的过程,会经过几个步骤:预编译,编译,汇编,链接。

编译命令

-E:预编译, 讲带#的语句重新展开到制定文件中

比如#define, #include "*.h"

gcc -E main.c -o main.i

-S:编译,将.o文件编译成编译成汇编文件(.s文件)

gcc -S main.c -o mian.s

-c:汇编,相比-S命令,多了assemble,生成目标文件(.o文件)

gcc -c main.c -o mian.o

最常用的命令,将.c文件直接编译成可执行文件或.o文件。

gcc main.c -o main

备注:

-std:使用哪个c语言标准编译

// 使用c99编译

gcc -std=c99 

// 使用gnu99(c99的gnu扩展)编译

gcc -std=gnu99

编译静态库

gcc -c hello.c -o hello.o// 静态库名称规则: lib+名字+.a(), 否则在使用-l链接的时候会找不到ar -r libhello.a hello.o hello2.o gcc main.c libhello.a -o main// 或者:gcc -L ./ main.c -lhello -o main  (-L制定库的搜索路径,-l调用链接库)

说明:.a表示archive归档。ar类似于tar,起打包的作用。

编译动态库

gcc -c -fpic hello.c (fpic:采用浮动地址)gcc -shared hello.o -o hello.so  (.so告诉编译器编译成动态库,省略的话会编译成exe)合并:gcc -fpic -shared hello.c -o hello.so

GCC 编译选项

选 项

含 义

ansi

支持符合ANSI标准的C程序

pedantic

允许发出ANSI C标准所列的全部警告信息

pedantic-error

允许发出ANSI C标准所列的全部错误信息

w

关闭所有告警

Wall

允许发出Gcc提供的所有有用的报警信息

werror

把所有的告警信息转化为错误信息,并在告警发生时终止编译过程

GCC 编译命令和基本使用相关推荐

  1. gcc编译命令的常用选项——强烈推荐大家使用 -Wall 选项

    C程序编编译的过程分为如下四个阶段 1.预处理:头文件展开(#include).宏替换(#define).条件编译(#ifdef)(.i)使用预处理器(预处理阶段处理的都是以#开头的代码) 2.编译: ...

  2. Linux gcc编译命令

    编写一个C程序 1.用文本文件编写代码 用 touch 命令:"touch 文件名" 可以创建一个文件(比如 touch hello.c),如下图: 在命令行输入 touch he ...

  3. gcc 编译命令选项$@ $^ $

    一些常见的自动化变量说明如下: (1) $@ --目标文件的名称: (2) $^ --所有的依赖文件,以空格分开,不包含重复的依赖文件: (3) $< --第一个依赖文件的名称. (4) $?  ...

  4. gcc 编译C语言最全命令

    gcc 编译命令 最简单的编译命令是:     gcc main.c 默认生成的可执行文件是 a.out 如果需要指定输出文件,则需要使用如下的命令:     gcc main.c – o main ...

  5. C语言:gcc编译过程及make命令、makefile语法规则

    gcc编译过程 编译过程: make && makefile make概述 makefile语法规则 make命令格式 Makefile案例 之所以写成多个文件,是出于模拟多模块编程的 ...

  6. Linux | 编译原理、gcc的命令参数、自动化构建工具 make/Makefile

    文章目录 编译原理 预处理 编译 汇编 链接 gcc的常用命令参数 make 和 Makefile 的概念 make的运行 通配符 自动化变量 伪目标.PHONE:[命令] 编译原理 在解释 make ...

  7. linux gcc g++编译命令选项

    gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码) ...

  8. [转]gcc下程序调用静态库编译命令:主文件必须在静态库前面!

    很容易犯的错误,转载以备注! 转载请注明文章地址,尊重作者赖半仙的劳动成果,谢谢支持: http://hi.baidu.com/mgqw/blog/item/0969c4230a2508559922e ...

  9. gcc编译工具常用命令以及汇编语言

    文章目录 一.Linux GCC常用命令 二.GCC编译器背后的故事 总结 一.Linux GCC常用命令 1 新建一个文件test,代码如下: #include <stdio.h>int ...

最新文章

  1. 从qspi启动linux时间,Zynq-Linux移植学习笔记(二十三)——QSPI速度配置
  2. 每年颁发两个图灵奖?
  3. finished with exit code -1073740791 (0xC0000409)解决方案
  4. 打算写的文章,先写个标题
  5. asp ed什么意思 j_这部洗脑ED动画是如何创作出来的?
  6. Apache-Shiro-权限缓存
  7. 微软小娜 服务器连不上网,Win10 64位联网状态下微软小娜无法连接网络
  8. mysql两台服务器怎么做数据同步_两台mysql服务器实现双机互备配置并测试数据同步...
  9. js学习总结----柯里化函数
  10. 记录一次解决404问题
  11. 2019 年一千多万条数据遭泄露!
  12. 简单python脚本实例-30个Python 小例子,帮你快速上手Python
  13. 分享一个免杀的netcat.exe
  14. 在 Flink 算子中使用多线程如何保证不丢数据?
  15. .net 6简单使用NPOI 读取 Excel 案例+流程
  16. mbedtls学习3.mbedtls_API分析
  17. Windows NT 下载
  18. json格式转csv格式
  19. 小程序实现单词查询搜索及搜索的历史记录
  20. Git删除提交历史记录

热门文章

  1. dell7080MFF黑苹果抄作业
  2. oppor15更新android,OPPOR15 Android P体验 刘海屏体验新方式
  3. 软件实习项目二:贪吃蛇的游戏开发
  4. python json.loads u_Python:json.loads返回前缀为’u’
  5. Spring中进行事务管理的两种方式
  6. jquery 点击事件 第一次点击选中 第二次点击改变状态
  7. 浪潮信息与宁盾共促身份管理系统升级 联合解决方案通过澎湃技术认证
  8. sqlConnection连接不上sql 2000 原来是因为没有打补丁sp4
  9. form表单提交以及用Jquery实现ajax提交form表单
  10. 北航计算机组成原理课程设计-2020秋 PreProject-数制