博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GCC编译器
阅读量:5219 次
发布时间:2019-06-14

本文共 2311 字,大约阅读时间需要 7 分钟。

详见《gcc中文手册》

编译过程

    预处理器cpp    编译器gcc    汇编器as     链接器linker   

file.c   -------------> file.i  ------------->file.s ----------->file.o -------------->file.out

file.h                          libc.a

 

gcc选项概述

man gcc                 查看更多选项信息
gcc [options] [filename]
    -x language
    -c                    只对文件进行编译和汇编,不链接
    -S                    只对文件进行编译,不汇编和链接
    -E                    只对文件进行预处理
    -o [file] file2     
    -lname  (小写L)用来指定所使用的库文件  例:-lm 使用libm.a (m就是库的名称)

 -Idirname         将dirname所指出的目录加入到程序头文件目录列表中

                      例:gcc foo.c -I /home/include -o foo                     

    -Ldirname       将dirname所指出的目录加到库文件的目录列表中。

                      例:gcc foo.c -L /home/lib -lfoo -o foo

  -static      静态链接(将库的内容加入程序中,形成完整的可执行程序)

    -w                    禁止生成警告信息
    -Wall                显示附加的警告信息

  -Dmacro    定义MACRO宏,等效于在程序中使用#define MACRO  

                      例:gcc -DDEBUG hello.c -o hello  

                        gcc -DNUM=2 hello.c -o hello

  -pedantic         严格要求符合ANSI标准

    -g                     添加调试信息
    -p                     产生prof所需的信息
    -pg                    产生gpof所使用的信息
    -O(-O1)             对编译出的代码进行优化
    -O2                 进行比-O高一级的优化
    -O3                 产生更高级别的优化
    -v                  
    -m***                根据不同的微处理器进行优化
详解:
    gcc -c test.c                生成.o文件
    gcc -S test.c                生成汇编文件.s
    gcc -E test.c -o test.i     生成.i
    gcc -V 2.6.3 -v              强制执行2.6.3版本
    gcc -m486                     使用对486的相应优化效果
    gcc -Wall -o test test.c
    gcc -g -Wall -o test3_1 test3_1.c
    gcc -ggdb3 -Wall -o test3_1 test3_1.c     -ggdb3使用最高级别的调试信息
    高级gcc选项
    1.管理大型项目(多模块的编译)
        gcc -Wall -c -o test3_1 test3_1.c
        gcc -Wall -c -o test3_2 test3_2.c
        gcc -Wall -c -o test3_3 test3_3.C
        gcc -o test test3_1.o test3_2.o test3_3.o
    2.指定查找路径 (-I -L)
        gcc -Wall -I/usr/include/zw -o test test.c
        gcc -Wall -L/usr/X11R6/lib -Wall -o test test.c -IX11
    3.链接库(-l) l链接的库可以是静态的也可以是共享的。

  gcc -o test test3a.o test3b.o test3.o -lm

        
    4.使用管道(使管道前的输出成为管道后的输入,可以同时调用多个程序) ?
        gcc -pipe -Wall -O3 -o test test.c  
        
Gcc编译流程
    C预处理    (C预处理器cpp)
    Gcc     (gcc)
    汇编     (as)
    文件处理建立静态库    (ar)
    GUN链接    (ld)
    
    辅助:
    库显示    (ldd)

/*************************此程序设计的性能很低。用于比较优化前后的性能导致程序低效的原因:for循环的结束值及步长每次都要重新计算five变量没有必要每次循环都为它分配值,只要在循环前做一次赋值即可**************************/#include 
int main(void){ int counter; int ending; int temp; int five; for(counter=0;counter<2*100000000*9/18+5131;counter+=(5-3)/2) { temp=counter/15302; ending=counter; five=5; } printf("five=%d;ending=%d\n;temp=%d",five,ending,temp); return 0;}

 带优化与不带优化的编译差别

//test3_2.c 程序优化gcc -Wall -o test3_2 test3_2.ctime ./test3_2 					//查看程序运行时间gcc -Wall -O1 -o test3_2pro test3_2.ctime ./test3_2pro

 

转载于:https://www.cnblogs.com/kwseeker-bolgs/p/4366684.html

你可能感兴趣的文章
flask 下载本地文件
查看>>
iOS开发拓展篇—UIDynamic(简单介绍)
查看>>
iOS开发UI篇—直接使用UITableView Controller
查看>>
logstash nested内嵌字段 field protobuf解码 codec 的解决办法
查看>>
GridView、Repeater获取当前行号
查看>>
bzoj2338[HNOI2011]数矩形 计算几何
查看>>
CodeForces - 732A Buy a Shovel 解题
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
哈希UVALive 6326 Contest Hall Preparation
查看>>
一个简易的服务框架lsf
查看>>
shell之批量新增用户脚本(http-basic-auth)
查看>>
springBoot于tomcat7搭建websocket服务
查看>>
android开发学习笔记:圆角的Button
查看>>
Activity简介
查看>>
jqGrid树
查看>>
循环-12. 打印九九口诀表(15)
查看>>
oracle树状索引详解(图摘取《收获不止oracle》)
查看>>
Android Studio 设置代码提示和代码自动补全快捷键--Eclipse 风格 - 转
查看>>
如何编写 Python 程序
查看>>
[Misc]2015 RCTF 日志记录
查看>>