注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

读程序,学习Linux编程(五)  

2010-08-11 09:00:23|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

2.4. gcc

2.4.1. 介绍

gcc是Linux下的编译工具。据说gcc只是一个壳,根据编译的对象不同,会调用不同的编译器来编译代码。比如编译的文件是c文件,会调用cc来编译,编译的文件是c++文件,会调用g++来编译。

Linux天生就是给开发人员用的。开发应用程序的头文件,在/usr/include下面。gcc在编译时,会自动在这个目标下找相关的头文件。

2.4.2. 安装

我下载的这个Ubuntu已经安装了gcc。好像Ubuntu 10.04默认安装了。没有装上的用下面这个命令安装:

sudo apt-get install build-essential

我不知道都装了什么东西,反正一般的c语言程序是能编译了。如果c++文件编译不了的,还要安装g++:

sudo apt-get install g++

2.4.3. 例子说明

用vim写一个hello.c程序:

#include

main()

{

printf("hello world.\n");

}

保存退出后,用gcc编译:

gcc –o hello hello.c

当前目录下生成了一个可执行程序hello。运行它:

./hello

简单说明一下。

gcc是编译命令,前面说了,他会根据文件后缀选择相应的编译器。

参数-o表示编译完后的可执行文件名称。Linux下的文件能不能执行,一般通过文件属性来判断。如果文件的可执行属性被设置了,就可以运行。如果你编译的是一个可执行文件,则通常不需要任何后缀,如果你编译的是一个链接文件(类似于Windows里的lib文件),则指定其后缀为.o。

hello.c是要编译的文件。通常这里写.c和.cpp文件就行了,.h文件可以不用写。

2.4.4. 常用参数

要完成复杂一点的编译,要用到Makefile文件,这个东西可以慢慢写,可以用automake自动生成,暂时不讨论它。平时自己练习,或者项目不大的时候,可以直接写编译命令行,这里列出一些常用的参数,我基本上用这些就够了,多了不知道,也记不住:

-o

指定输出结果,如果没指定,默认为a.out。如果是一个可执行程序,最好用这个参数指定一个有意义的名字。

-g

如果编译后希望用gdb调整程序,可以加入这个参数。类似于VC里编译Debug版本。

-Wall

打印出所有的Warning。我在Windows下写程序,通常将Warning级别开到4,并且不允许程序有一个Warning。

-O1 –O2 –O3 –O4

优化选项,号称O2最平衡。如果是发布版本,最好把-O2加入进来。

-I

指定include路径。用了一个别的软件包,其头文件不是默认安装在/usr/include下面,则可以用这个参数指定其它目录。

gcc –I/usr/src/tinyproxy-1.6.3/include

-L

指定library路径。假如引用了Ace库,则指定Ace库文件的路径。-L/usr/src/ace/obj

-l

指定库文件。比如用了curses,-lcurses

-D

指定编译宏。比如编译一个DEBUG版本,-DDEBUG。比如使用Unicode,-DUNICODE=1

  评论这张
 
阅读(4)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017