Loading
新闻中心库存中心价格中心PDF中心图片中心
ICGLE 电子技术支持中心,为电气人员和相关企业提供全面的信息(IC技术\IC库存\IC图片\PDF资料等)服务
总线设计PCB设计单片机DSPARM
JAVA驱动设计C/C++汇编J2EE网络协议中间件技术嵌入式系统无线通信通信网络模拟技术接口电路显示光电传感与控制EDA/PLD
气流体控制电子产品电机及工具通信设备仪器仪表电线电缆建筑电气低压电器高压电器电源工控自动化广电设备医疗器械More..
电源设计仪器仪表技术专递电路图片电子专栏储存技术汽车电子测量测试音响技术家用电器
成功方案市场分析行业标准应用前沿芯片应用综合专区
linux下命令行下编译c程序
来源:Linux宝库   作者:Linux宝库
字体大小:[大][中][小]

  C 是所有版本的UNIX上的系统语言.
 
  C 在过去的二十年中有了很大的发展. 在80年代末期美国国家标准协会(American NationalStandards Institute)发布了一个被称为 ANSI C 的 C 语言标准.这更加保证了将来在不同平台上的 C 的一致性. 在80年代还出现了一种 C 的面向对象的扩展称为 C++.
  
  Linux 上可用的 C 编译器是 GNU C 编译器, 它建立在自由软件基金会的编程许可证的基础上, 因此可以自由发布. 你能在 Linux 的发行光盘上找到它.
  
  随 Slackware Linux 发行的 GNU C 编译器(GCC)是一个全功能的 ANSI C 兼容编译器. 如果你熟悉其他操作系统或硬件平台上的一种 C 编译器, 你将能很快地掌握 GCC. 这和java在命令行下
  
  编译也很类似我们将在下面介绍如何使用 GCC 和一些 GCC 编译器最常用的选项.
  
  格式 gcc [option] [sourcefilename]
  
  gcc的选项十分繁多,大约有上百中,不过平时常用的不是非常多,我们将要介绍一些常用的选项:
  
  最简单的是:gcc hello.c
  
  默认的情况下将生成a.out的可执行性文件,你只需要在终端上输入./a.out就可以看到执行的结果.
  
  如果你想指定生成目标文件的名字那么你可以加上 -o选项,命令如下:
  
  gcc -o hello hello.c
  
  gcc也允许你只编译源程序,这样可以只检查编译时刻的错误,有利也调试程序,用-c选项可以达到这个目的
  
  命令如下:
  
  gcc -c hello hello.c
  
  结果生成了一个中间代码hello.o文件
  
  编译选项告诉 GCC 在为 C 代码产生了汇编语言文件后停止编译. GCC 产生的汇编语言文件的缺省扩展名是 .s . -E 选项指示编译器仅对输入文件进行预处理. 当这个选项被使用时, 预处理器的输出被送到标准输出而不是储存在文件里.
  
  之后你可以对上述中间代码进行链接运行,使用命令:
  gcc -o hello.out hello.c
  
  优化选项
  
  当你用 GCC 编译 C 代码时, 它会试着用最少的时间完成编译并且使编译后的代码易于调试. 易于调试意味着编译后的代码与源代码有同样的执行次序, 编译后的代码没有经过优化.有很多选项可用于告诉 GCC 在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件. 这些选项中最典型的是-O 和 -O2 选项.
  
  -O 选项告诉 GCC 对源代码进行基本优化. 这些优化在大多数情况下都会使程序执行的更快. -O2 选项告诉 GCC 产生尽可能小和尽可能快的代码. -O2 选项将使编译的速度比使用 -O时慢. 但通常产生的代码执行速度会更快.
  
  GCC 支持数种调试和剖析选项. 在这些选项里你会最常用到的是 -g 和 -pg 选项.
  
  选项告诉 GCC 产生能被 GNU 调试器使用的调试信息以便调试你的程序. GCC 提供了一个很多其他 C 编译器里没有的特性, 在 GCC 里你能使 -g 和 -O (产生优化代码)联用. 这一点非常有用因为你能在与最终产品尽可能相近的情况下调试你的代码. 在你同时使用这两个选项时你必须清楚你所写的某些代码已经在优化时被 GCC 作了改动. 关于调试 C 程序的更多信息请看下一节"用 gdb 调试 C 程序" .
  
  如下命令 gcc -c -g hello.c
  
  pg 选项告诉 GCC 在你的程序里加入额外的代码, 执行时, 产生 gprof 用的剖析信息以显示你的程序的耗时情况.
  
  关于ggc的详细信息可用man gcc来查看。
Upload by 小刘(2007-6-8)
IC
IC
推荐技术文章:
·VxWorks中以太网通信报文的粘连....
·VxWorks下基于CS4281声卡....
·VxWorks系统下的RTL8139....
·基于VxWorks的视频采集系统的设....
·VxWorks下UDP协议栈效率的研....
·基于MPC860T的嵌入式通信服务器....
·基于VxWorks嵌人式操作系统的C....
·VxWorks操作系统及实时多任务程....
·基于嵌入式操作系统VxWorks的图....
·利用VxWorks作Internet....
·移植U-Boot到AT91RM920....
·一种改进嵌入式Linux操作系统实时....
·Linux内核初始化及启动之用户模式....
·Linux在信息家电(IA)上的应用..
·嵌入式Linux的动态扩展技术研究..
·基于Linux的嵌入式POS的GUI....
·Linux嵌入式系统与硬件平台的关系..
·基于嵌入式Linux的打印控制系统的....
·Linux下获得CPU利用率和内存使....
·擂台战:嵌入式Linux面临图形化挑....
·面向多媒体应用的嵌入式Linux实时..
·Linux系统内存磁盘初始化技术详细..
·Linux下的网络HOOK实现以及使..
·Linux系统下搭建C/C++开发的..
·移动电话挑战嵌入式Linux
·在嵌入式Linux上实现JFFS文件..
·基于嵌入式Linux系统界面的研究
·Linux的向“心”力运动
·支持基于Linux的USB设备的三种..
·基于ARM的嵌入式Linux开发平台
·主流嵌入式Linux动态扩展技术比较..
·嵌入Linux基于MiniGUI信息..
·蓝牙模块在HHARM2410上的移植
·基于Linux的嵌入式系统在测控系统..
·uClinux在嵌入式系统中的移植研..
·用busybox制作嵌入式Linux..
·基于uClinux的远程温度监控系统..
·uClinux内核移植相关代码分析
·linux驱动相关
·WinCE系统下BootLoader..
IC
IC

©2007 版权归ICGLE所有   页面执行时间:62.500毫秒