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
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
相关文章推荐
- gcc 基本编译命令, 注意别出错
- gcc基本编译命令
- g++和gcc基本的编译命令
- Linux gcc编译命令
- GCC 编译链接命令用法
- gcc的基本用法及命令
- Ubuntu GCC常用编译命令选项
- ubuntu下编译时出现“make: arm-linux-gcc:命令未找到”的问题
- gcc/g++/ldd等常用命令基本参数(整理)
- gcc命令及编译过程
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- gcc基本命令
- gcc 编译命令2
- gcc编译过程、C语言编译过程分析、环境变量设置、linux文件夹结构和用途介绍、常用文件和目录的操作命令、文件类型
- [转载]ubuntu下编译时出现“make: arm-linux-gcc:命令
- 我是这样学习Linux下C语言编程的-编译命令gcc的使用
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- Linux下编译的一些基本命令