注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Linux >> Linux编程 >> CC编程 >> Linux正文

Linux平台下关于GCC编译及使用的方法

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2008-5-25 3:22:45 【 】 【加入收藏

    编译:

    第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:

    gcc -E hello.c -o hello.i

    预处理的宏定义插入到hello.i中

    第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成:

    gcc -c hello.i -o hello.o

    也可以通过源文件直接生成

    gcc -c hello.c

    第三步、是将生成的目标文件链接成可执行文件:

    gcc hello.o -o hello

    也可以通过源文件直接生成

    gcc -o hello hello.c

    警告:

    1、-pedantic 选项,那么使用了扩展语法的地方将产生相应的警告信息

    2、-Wall 使用它能够使GCC产生尽可能多的警告信息

    3、-Werror,它要求GCC将所有的警告当成错误进行处理

    库依赖:

    1、Linux下的大多数函数都默认:

    头文件放到/usr/include/目录下

    而库文件则放到/usr/lib/目录下

    2、GCC在编译时必须有自己的办法来查找所需要的头文件和库文件。

    -I选项可以向GCC的头文件搜索路径中添加新的目录。

    例如,如果在/home/xiaowp/include/目录下有编译时所需要的头文件,为了让GCC能够顺利地找到它们,就可以使用-I选项:

    gcc -o test test.c -I /home/xiaowp/include

    -L选项向GCC的库文件搜索路径中添加新的目录

    例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令

    gcc -o test test.c -L /home/xiaowp/lib -lfoo

    值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so.

    Linux下的库文件在命名时有一个约定,那就是应该以lib三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去lib三个字母,也就是说GCC在对-lfoo进行处理时,会自动去链接名为libfoo.so的文件。

    -static选项,强制使用静态链接库

    如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so和libfoo.a

    为了让GCC在链接时只用到静态链接库,可以使用下面的命令:

    gcc -o test test.c -L /home/xiaowp/lib -static -lfoo

    选项-O可以告诉GCC同时减小代码的长度和执行时间,其效果等价于-O1.

    在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops)两种优化。

    选项-O2告诉GCC除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。

    选项-O3则除了完成所有-O2级别的优化之外,还包括循环展开和其它一些与处理器特性相关的优化工作。

    通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快。

    许多Linux程序员都喜欢使用-O2选项,因为它在优化长度、编译时间和代码大小之间,取得了一个比较理想的平衡点。

    time ./test 查看程序执行时间

    优化虽然能够给程序带来更好的执行性能,但在如下一些场合中应该避免优化代码:

    程序开发的时候优化等级越高,消耗在编译上的时间就越长,因此在开发的时候最好不要使用优化选项,只有到软件发行或开发结束的时候,才考虑对最终生成的代码进行优化。

    资源受限的时候一些优化选项会增加可执行代码的体积,如果程序在运行时能够申请到的内存资源非常紧张(如一些实时嵌入式设备),那就不要对代码进行优化,因为由这带来的负面影响可能会产生非常严重的后果。

    跟踪调试的时候在对代码进行优化的时候,某些代码可能会被删除或改写,或者为了取得更佳的性能而进行重组,从而使跟踪和调试变得异常困难。

    加速:

    使用管道代替编译中临时文件,

    -pipe 加速编译

    gcc -pipe foo.c -o foo

    GCC常用选项

    -c 通知GCC取消链接步骤,即编译源码并在最后生成目标文件;

    -Dmacro 定义指定的宏,使它能够通过源码中的#ifdef进行检验;

    -E 不经过编译预处理程序的输出而输送至标准输出;

    -g3 获得有关调试程序的详细信息,它不能与-o选项联合使用;

    -Idirectory 在包含文件搜索路径的起点处添加指定目录;

    -llibrary 提示链接程序在创建最终可执行文件时包含指定的库;

    -O、-O2、-O3 将优化状态打开,该选项不能与-g选项联合使用;

    -S 要求编译程序生成来自源代码的汇编程序输出;

    -v 启动所有警报;

    -Wall 在发生警报时取消编译操作,即将警报看作是错误;

    -Werror 在发生警报时取消编译操作,即把报警当作是错误;

    -w 禁止所有的报警。

  • 上一篇Linux:

  • 下一篇Linux:
  • 最 新 热 门
     Ubuntu 8.04 广告登陆德国柏林的地铁系统
     Ubuntu推出超便携设备 Netbook Remix
     自由软件之父Stallman:OLPC背叛自由精神
     技嘉U60 UMPC搭Ubuntu系统继续冲
     第二届 Ubuntu Live 大会已经宣布取消
     Ubuntu 8.04与XP SP3性能大比拼
     媒体断章取义 诺基亚否认将推Linux手机
     FireFox 3.0 被指降低Linux系统性能
     Ubuntu开发者峰会在布拉格举行
     诺基亚将在更多产品上采用Linux操作系统
    最 新 推 荐
     初识Linux/C语言编程 管道和重定向理解
     几种常被人们忽略的Linux系统下编程语言
     新手学堂:Linux系统中如何编译C程序
     SUSE Linux系统BASH下配置JAVA环境变量
     Ubuntu Linux 8.04系统JAVA环境配置方法
     Linux操作系统下C程序语言简易编程尝试
     Linux平台下关于GCC编译及使用的方法
     Linux操作系统下配置JSP开发环境的方法
     Linux下C语言编程 线程操作入门常识
     linux系统下c语言编程入门--线程操作
    相 关 文 章

    第二届 Ubuntu Live 大会已经宣布取消
    媒体断章取义 诺基亚否认将推Linux手机
    FireFox 3.0 被指降低Linux系统性能
    诺基亚将在更多产品上采用Linux操作系统
    老牌劲旅Debian Linux登录网络存储舞台
    全面出击 诺基亚将推Linux系统手机
    微软公司对Linux操作系统使出的各种杀招
    非虚拟环境让Windwos飞速运行Linux程序
    Linux平台下“最糟糕”的硬件
    Linux是否为你的桌面准备好了

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用