gcc 编译命令

最简单的编译命令是:
    gcc main.c
默认生成的可执行文件是 a.out

如果需要指定输出文件,则需要使用如下的命令:
    gcc main.c – o main

使用-Wall 选项可以输出所有的警告信息:
    gcc -Wall main.c -o main

输出 C 源码的预处理结果, 使用-E 选项,默认是输出控制台,可以将其
重定向到文件保存:
     gcc -E main.c > main.i

如果只想输出汇编代码而非二进制代码,使用-S :
    gcc -S  main.c

使用-C(大写) 选项只生成 C 程序对应的目标文件,但是不进行链接:
    gcc -C main.c

输出所有的中间文件, 使用-save-temps 选项:
    gcc -save-temps main.c

共享库进行链接,应使用-l 选项再加上库程序的名字,例如,程序引用了 math 库中的 pow 函数:
   gcc -Wall main.c -o main – lm

编译生成共享库时,为了保证所生成的库可以被加载到合法的任意地址,需
要使用-fPIC 选项,例如如下的命令生成一个名为 test.so 的共享库:
    gcc -c -Wall -Werror -fPIC test.c
    gcc -shared -o test.so test.o

如果想查看编译器是怎么编译源程序的,以及每一步所使用的命令是什么,
则应该使用-V 选项:
    gcc -Wall -v main.c -o main

使用-ansi 可以指定编译器编译源码时遵循的语言标准,例如如下代码按照 ISO C89 对源码进行编译:
    gcc -Wall -ansi main.c -o main

有些时候警告中往往预示着一些潜在的错误,因此部分项目在编译时要求将警告当做错误看到, 使用-Werror :
    gcc -Wall -Werror main.c -o main

经过优化的代码调试时可能会出现找不到声明的变量、控制流程发生变化、有些语句被直接跳过等现象。总而言之,不可能对编译之后的代码进行调试。为了让编译器生成额外的信息以利于程序的调试(例如使用 gdb),使用  -g 
    gcc -Wall -Werror – g main.c -o main

使用-O0 选项可以禁用所有编译器优化,使用-O1、-O2 和-O3 逐步打开更多的优化选项。-Og 则在保证调试工作的同时完成了少量的优化。

如果有一些宏需要在编译时代入, 使用-D 选项,例如如下的代码

#include<stdio.h>
int main(void)
{#ifdef MY_MACROprintf("\n Macro defined \n");#endifchar c = -10;
// Print the stringprintf("\n The Geek Stuff [%d]\n", c);return 0;
}

使用如下的命令编译:
    gcc -Wall -DMY_MACRO main.c -o main
则会打印输出相应的语句。

gcc 编译C语言最全命令相关推荐

  1. GCC 编译 C 语言文件

    GCC 编译 C 语言文件 题目要求 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b) ...

  2. gcc编译c语言多线程程序的步骤,GCC分步骤编译C语言程序

    上节<GCC编译C语言程序完整演示>讲解的是通过gcc命令一次性完成编译和链接的整个过程,这样最方便,大家在学习C语言的过程中一般都这么做.实际上,gcc命令也可以将编译和链接分开,每次只 ...

  3. linux c语言编程内嵌汇编,gcc编译c语言中内嵌汇编

    gcc编译c语言中内嵌汇编 --AT&T and Intel 汇编语法对照 寄存器命名: AT&T:  %eax Intel: eax AT&T 语法源地址在左侧,目的地址在右 ...

  4. linux如何用gcc编译c程序,Ubuntu之如何使用gcc编译C语言程序

    在大学里面大家都用过VC6.0来进行编程.VC6.0属于集成开发环境,一份代码从文本变成可执行的程序只需要在其中点击几个按钮就行了,加之老师也只教过我们如何操作,并未介绍C语言的执行过程.上一篇曾提到 ...

  5. centos 7使用gcc编译c语言,CentOS 7编译安装gcc 4.9.4

    1. 为什么要升级到gcc4.9.x呢? 因为最近在做的一个项目中要用C++11新特性,而在 g++ 4.9 之前,regex 库并不支持 ECMAScript 的正则语法,换句话说,在 g++4.9 ...

  6. Linux GCC简明教程(使用GCC编译C语言程序)

    文章目录 Gedit 编辑器 GCC 编译器 1) 生成可执行程序 2) 运行可执行程序 完整的演示 分步骤编译 1) 编译(Compile) 2) 链接(Link) 市面上常见的 Linux 都是发 ...

  7. 将如下c语言代码汇编成s文件,gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序(s ...

  8. 怎样用gcc编译c语言,使用GCC编译C语言程序

    使用Eclipse CDT开发C语言程序,虽然使用很方便,效率也很高,但是它向我们隐藏了很多细节.虽然大多数时候这并不影响我们的开发,但是当我们需要对程序的编译链接过程进行更加特殊的控制,以获得可以满 ...

  9. 使用gcc编译c语言程序,用GCC编译C ++程序

    在这里,我们将看到如何使用GCC(GNU C编译器)编译C ++程序.让我们考虑一下,我们要编译这个程序. 示例#include using namespace std; main() { cout  ...

最新文章

  1. Docker 入门系列(3)- Docker 容器(创建、启动、终止、进入、删除、导入、导出容器、容器和镜像转化)
  2. PMcaff每日推荐5本--产品经理必读的互联网专业书籍
  3. 2009年3月28日四级网络工程师 试卷答案、点评及讨论
  4. 【转载】用廉价的315M遥控模块实现数据传输
  5. 一套存储承载全场景,XSKY星辰天合发布企业级SDS V5系列
  6. linux查看etl进程,常见ETL工具
  7. 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...
  8. Java并发编程之线程安全性分析之原子性、可见性、有序性
  9. 理解了这三点,才敢说自己会写Python代码
  10. 11月6日云栖精选夜读:阿里云双11访谈之云安全
  11. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .
  12. html ul动态添加li,javaScript动态添加Li元素
  13. mac 磁盘分区 diskutil命令
  14. 安全无污染的激活win7(官方)
  15. Java Swing写简单计算器以及拓展贷款计算器(等额本息和等额本金计算可以单独拿出来用)
  16. 数据外连接 LEFT OUT JOIN 的用法
  17. windows自带截图键(shift+ win + s)没有反应,一招教你快速解决!
  18. 电化学甲醛气体传感器
  19. 关于IDEA编辑HTML文本严重卡顿,例如使用快捷键var ,function等等, 扩大缩小IDEA窗口。
  20. 【MCAL_CANDriver】-1.2-Can Mailbox邮箱,Hardware Object,HOH,HRH,HTH之间的关系

热门文章

  1. 第二周-python实战-youtube视频分析
  2. 鼓励参与计算机考试宣传标语,考试考场宣传标语横幅大全
  3. 下标越界 实时错误381 vb
  4. 计算机基本知识扫盲(持续更)
  5. AngularJs Cookies 操作
  6. 如何使用MFC编写自定义UI界面【附高仿QQ 2014登陆界面范例程序】
  7. 对产品的思考——商业本质的思考
  8. git合并分支时如何解决冲突
  9. php sprintf 漏洞,解析php sprintf函数漏洞
  10. Android 下载不同版本的platform-tools