gcc编译文件过程

  .c文件到 .i文件 到.s(汇编文件)  到.o文件,再到可执行文件

.c到.i

实操一下:

test.c文件如下 :

   #include <stdlib.h>
#include <stdio.h>
int main()
{
char buf[]={};
int n = snprintf(buf, , "%s", "");
printf("buf: %s\n", buf);
printf("n: %d\n", n); }

gcc -E test.c -o test.i,文件过大,只显示一部份

gcc  -s  test.i

vim test.s

test.s内容如下:

   .LC2:
.string "buf: %s\n"
.LC3:
.string "n: %d\n"
.text
.globl main
.type main, @function
main:
.LFB2:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset
.cfi_offset , -
movq %rsp, %rbp
.cfi_def_cfa_register
subq $, %rsp
movq %fs:, %rax
movq %rax, -(%rbp)
xorl %eax, %eax
movq $, -(%rbp)
leaq -(%rbp), %rax
movl $.LC0, %ecx

汇编代码到 .o文件

gcc -c test.s   生成 test.o

生成二进制文件

gcc -c test.o -o test

gcc常用命令使用的更多相关文章

  1. GCC常用命令行一览表

    GCC常用命令行一览表 这些常用的 gcc/g++ 命令行参数,你都知道么?1. gcc -E source_file.c-E,只执行到预编译.直接输出预编译结果. 2. gcc -S source_ ...

  2. gcc 常用命令行及解释

    gcc - GNU project C and C++ compiler   gcc [option] file...            preprocessing         compila ...

  3. Linux系统GCC常用命令和GCC编译过程描述

    前言: GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言.GCC 很快地扩展,变得可处理 C++.后来又 扩展能够支持更多编程语言,如Fortran. ...

  4. Linux GCC常用命令

    1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...

  5. gcc常用命令集

    引用:http://developer.51cto.com/art/200609/32317_1.htm 对于GUN编译器来说,程序的编译要经历预处理.编译.汇编.连接四个阶段 假设源程序文件名为te ...

  6. (转)Linux GCC常用命令

    1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...

  7. gcc 常用命令

    gcc编译器 $ gcc -o XX.exe XXX.c ddd.c $ gcc -o XX.asm -S XXX.c  编译生成可执行文件,并执行程序,缺省的时候,gcc 编译出来的文件是a.out ...

  8. gcc常用命令

    1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...

  9. Linux GCC常用命令学习

    1简介 GCC 的意思也只是 GNU C Compiler 而已.经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言:它现在还支持 Ada 语言.C++ 语言.Java 语言.Objective ...

  10. 【转】Linux GCC常用命令

    转自:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html 1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Comp ...

随机推荐

  1. 【PPT大放送】MPD软件工作坊北京站圆满落幕 深圳站即将开幕!

    MPD工作坊深圳站体验票开启啦!文末有彩蛋哦! 7月14日至15日,由麦思博(msup)有限公司举办的第40届MPD软件工作坊在北京国家会议中心举行. 麦思博(msup)有限公司一直专注于软件研发中心 ...

  2. 【每日一题】 uva-232 模拟+输出要求很严格

    https://cn.vjudge.net/problem/UVA-232 uva的题,结尾不能多\n,空格什么的 反正就是个中型模拟,题目多读就行 #define _CRT_SECURE_NO_WA ...

  3. win server 2008添加磁盘-脱机转换为联机状态方法

    解决方案如下: 1.运行:cmd2.输入:DISKPART3.DISKPART> san4.DISKPART> san policy=onlineall5.DISKPART>list ...

  4. 类中的函数带有self,不带self的区别

    1.类里函数不带self,这是我们调用类里的函数直接用类名.函数名() class shop(object): def scan_goods(): #括号内不带self print('浏览商品') d ...

  5. mysql缓冲

  6. linux strncpy()和strcat使用总结

    strcat原型:char *strcat(char *dest,const char *src); 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'.src和de ...

  7. swift 相机、相册、定位的权限判断

    //是否开启相机权限 func IsOpenCamera() -> Bool{ let authStatus = AVCaptureDevice.authorizationStatus(for: ...

  8. 用uart实现printf函数

    硬件:JZ2440 实现功能:用putchr()函数实现printf() start.s nand.c uart.c uart.h my_stdio.c my_stdio.h main.c start ...

  9. 使用Jersey上传文件

    采用jquery.form.js异步上传图片,并结合<form>表单 <script type="text/javascript"> //采用jquery. ...

  10. shell编程awk基础介绍

    awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理    读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行.    awk里面的换行 ...