您的位置:首页 > 其它

gcc基本编译命令

2011-06-04 22:42 232 查看
1. gcc -o hello hello.c

gcc hello.c -o hello

2. 头文件:

头文件提供对常量的定义和对系统及库函数调用的声明,对C程序来说,标准头文件位置一般为/usr/include及其子目录,如果头文件不在编译器自动搜索的目录里,则可用-I标志指定,例如:

gcc -I/usr/openwin/include fred.c

3. 库文件

库是一组预先编译好的函数的集合,标准系统库文件一般存储在/lib和/usr/lib目录中,默认情况下链接程序只搜索标准C语言库, 库文件的名字总是以lib开头, 随后的部分指名这是什么库,文件名的最后部分以.开始, 然后给出库文件的类型:
.a: 静态库, 类似于Windows中的.LIB文件

.so: 共享库, 类似于Windows中的.DLL文件

可通过以下三种方式显示指定链接库位置:

(1)gcc -o fred fred.c /usr/lib/libm.a

(2)gcc -o fred fred.c -lm 会优先链接标准库目录中名为libm.so的函数库

(3)gcc -o x11fred -L/usr/openwin/lib x11fred.c -lx11 增加/usr/openwin/lib为库搜索路径

4. 创建静态库

步聚:

(1)编写源文件, 如bill.c fred.c

(2)-c编译为目标文件, 例gcc -c bill.c fred.c

(3)为库文件创建头文件, 最好把头文件包邻含进源文件中, 有助于编译器发现错误

(4)用ar程序创建一个归档文件并将目标文件添加进去

ar crv libfoo.a bill.o fred.o

(5)对于非GNU的软件开发工具, 还要为库函数生成一个内容表

ranlib libfoo.a

5. nm命令可察看目标文件, 函数库, 可执行文件里包含的函数

6. gcc能编译链接C程序, gcc能编译C++源程序, 但不能自动的C++程序使用的库链接, 所以常使用g++来编译链接C++程序

7.警告

-W: 全面警告

-w: 关闭警告

-Wall: 常规警告信息

8.优化

-O0 : 默认不优化(若要生成调试信息,最好不优化)

-O1 : 简单优化,不进行速度和空间的权衡优化;

-O2 : 进一步的优化,包括了调度。(若要优化,该选项最适合,他是GNU发布软件的默认优化级别;

-O3 : 鸡肋,兴许使程式速度更慢;

-funroll-loops : 展开循环,会使可执行文档增大,而速度是否增加取决于特定环境;

-Os : 生成最小执行文档;

一般来说,调试时不优化,一般的优化选项用-O2(gcc允许-g和-O2联用,这也是GNU软件包发布的默认选项),embedded能够考虑-Os。

测试优化效果, time命令

time测量指定程式的执行时间,结果由三部分组成:

real : 进程总的执行时间, 他和系统负载有关(包括了进程调度,转换的时间)

user: 被测量进程中用户指令的执行时间

sys : 被测量进程中内核代用户指令执行的时间

user和sys的和被称为CPU时间.

9.编译预处理及生成汇编代码

gcc -E hello.c 在控制台显示预处理后结果

gcc -S hello.c 生成hello.s的汇编源文件

10.调试选项

-g
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: