免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1517 | 回复: 2
打印 上一主题 下一主题

GCC [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览
编译过程
    • 1. 预处理
          预处理程序cpp是来展开宏等其他操作,(-E选项表示预处理后停止编译过程)
          $gcc –E hello.c –o hello.cpp
      2. 适当编译
      3. 汇编
          将hello.cpp 编译为目标代码,(-x选项声明从指定的步骤开始编译,这里为,cpp-output)
          $gcc –x cpp-output –c hello.cpp –o hello.o
      4. 链接
          $gcc hello.o –o hello

文件扩展名
.c, / .C, .cc c/c++ 源代码
.i, / .ii 预处理后的 c/c++ 源代码
.S, .s 汇编 源代码
.o 目标 代码
.a, .so 库 代码
  常用命令行选项
-o 目标代码
-c 只编译不链接
-DFOO=BAR 定义预处理宏
-IDIRNAME include 包含目录
-LDIRNAME include 库目录
-static 只链接静态库
-lFOO 链接libFOO.so的库
-g 包含标准调试信息
-ON 优化编译(0<=N<=3), 默认为1
-w 关闭所有警告
-Wall 开启所有警告
-Werror 把所有警告报告为错误
-fsyntax-only 只检查语法而不进行编译
-MM 输出一个make兼容的相关列表(没反应?)
-v 显示编译用到的每一步命令(好多,没多大必要)
  链接静态库和动态库的例子

$gcc main.c –L/home/ubuntu/lib –I/home/ubuntu/include –lnew –o main
$gcc main.c –L/home/ubuntu/lib –I/home/ubuntu/include –lnew –static –o main

常用优化选项
-finline-functions 把所有简单函数在通用它们的函数中就地展开
-funroll-loops 展开所有能在编译时确定重复次数的循环体
-fomit-frame-pointer 如果函数不需要则丢掉帧指针
。。。 。。。

内联和循环展开技术能大大提高程序的执行速度。
在上表中是比较详细的针对性选项。一般情况下,最好选择定义好的-O1, –O2, –O3, 即可。用O2的比较多。

调试选项
-g 标准调试信息
-p 加入prof程序能够识别的剖析符号信息
-pg 加入gprof程序能够识别的剖析符号信息

论坛徽章:
0
2 [报告]
发表于 2012-08-07 13:13 |只看该作者
汇编阶段不应该是gcc -c hello.s -o hello.o吗??

论坛徽章:
8
亥猪
日期:2014-02-09 10:55:252015小元宵徽章
日期:2015-03-06 15:57:20数据库技术版块每日发帖之星
日期:2015-06-08 22:20:00综合交流区版块每日发帖之星
日期:2015-06-14 22:20:002015亚冠之阿尔沙巴布
日期:2015-09-01 20:23:45IT运维版块每日发帖之星
日期:2015-09-04 06:20:00IT运维版块每日发帖之星
日期:2015-11-04 06:20:00IT运维版块每日发帖之星
日期:2015-12-04 06:20:00
3 [报告]
发表于 2012-08-08 15:51 |只看该作者
啥玩意啊?这个板块不合适吧?

这是都是玩手机的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP