常见gcc编译参数
2006-04-25 19:09
295 查看
一:编译过程的4个阶段:预处理,编译,汇编,链接;
1:最常用的方式
gcc hello.c -o hello
2:预处理后停止编译
gcc -E hello.c -o hello.i(.i通常为已经预处理过的C原始程序)
3:将hello.i编译为目标代码,可以使用-c参数来完成
gcc -c hello.i -o hello.o
也可以使用-x参数让gcc从指定的步骤开始.
4:将生成的目标文件链接成可执行文件
gcc hello.o -o hello
5:多个源文件时
gcc f1.c f2.c -o file
二:gcc参数的警告提示功能
1:-pedantic 使用了ANSI/ISO C语言扩展语法的地方将产生相应的警告信息
2:-Wall 产生尽可能多的警告信息,建议始终带上
3:-Werror 将所有的警告当成错误进行处理
三:库依赖
函数库实际上就是一些头文件和库文件的集合.
-I选项向gcc的头文件搜索路径中添加新的目录
-L选项向gcc的库文件搜索路径中添加新的目录
-l指定链接的库文件名,如 -ldavid 表示指示gcc去连接库文件libdavid.so
-static强制使用静态链接库
动态库文件(.so)和静态库文件(.a)的区别在于程序执行时所需的代码是运行时动态加载的,还是编译时静态加载的.gcc优先使用动态库
四:其他
-On 控制优化代码的生成,n是一个代表优先级别的整数;n取0~3;-O相当于-O1;
-O1 减小代码的长度和执行时间,一般包括线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops);
-O2 在O1基础上,进行一些额外调整,如处理器指令跳转;
-O3 在O2基础上,循环展开一些其他和处理器特性相关的优化工作;
-pipe:管道,它可以用来同时连接两个程序,其中一个程序的输出将直接作为另一个程序的输入,这样就可以避免使用临时文件,提高编译速度,但编译时消耗更多的内存.
-Dmacro 定义指定的宏,使它能够通过源码中的#ifdef进行检验
-g3 获得有关调试程序的详细信息
-S 要求编译程序生成来自源代码的汇编程序输出
-v 启动所有报警
-w 禁止所有报警
五:常见错误类型
1:syntex error,语法错误
2:can't find include file,头文件错误
3:ld:lm:No such file or directory,找不到所需的函数库
4:Undefined symbol未定义符号:源代码文件未被包含或编译。
1:最常用的方式
gcc hello.c -o hello
2:预处理后停止编译
gcc -E hello.c -o hello.i(.i通常为已经预处理过的C原始程序)
3:将hello.i编译为目标代码,可以使用-c参数来完成
gcc -c hello.i -o hello.o
也可以使用-x参数让gcc从指定的步骤开始.
4:将生成的目标文件链接成可执行文件
gcc hello.o -o hello
5:多个源文件时
gcc f1.c f2.c -o file
二:gcc参数的警告提示功能
1:-pedantic 使用了ANSI/ISO C语言扩展语法的地方将产生相应的警告信息
2:-Wall 产生尽可能多的警告信息,建议始终带上
3:-Werror 将所有的警告当成错误进行处理
三:库依赖
函数库实际上就是一些头文件和库文件的集合.
-I选项向gcc的头文件搜索路径中添加新的目录
-L选项向gcc的库文件搜索路径中添加新的目录
-l指定链接的库文件名,如 -ldavid 表示指示gcc去连接库文件libdavid.so
-static强制使用静态链接库
动态库文件(.so)和静态库文件(.a)的区别在于程序执行时所需的代码是运行时动态加载的,还是编译时静态加载的.gcc优先使用动态库
四:其他
-On 控制优化代码的生成,n是一个代表优先级别的整数;n取0~3;-O相当于-O1;
-O1 减小代码的长度和执行时间,一般包括线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops);
-O2 在O1基础上,进行一些额外调整,如处理器指令跳转;
-O3 在O2基础上,循环展开一些其他和处理器特性相关的优化工作;
-pipe:管道,它可以用来同时连接两个程序,其中一个程序的输出将直接作为另一个程序的输入,这样就可以避免使用临时文件,提高编译速度,但编译时消耗更多的内存.
-Dmacro 定义指定的宏,使它能够通过源码中的#ifdef进行检验
-g3 获得有关调试程序的详细信息
-S 要求编译程序生成来自源代码的汇编程序输出
-v 启动所有报警
-w 禁止所有报警
五:常见错误类型
1:syntex error,语法错误
2:can't find include file,头文件错误
3:ld:lm:No such file or directory,找不到所需的函数库
4:Undefined symbol未定义符号:源代码文件未被包含或编译。
相关文章推荐
- gcc常见编译参数介绍
- gcc常见编译参数介绍
- C/C++常见gcc编译链接错误解决方法
- gcc编译参数-fPIC的一些问题
- gcc编译参数-fPIC的一些问题
- g++/gcc 常见选项。(muduo 编译小程序举例)
- 不同的硬件环境下gcc编译参数
- gcc编译常见问题
- gcc 编译c++常见错误汇总
- gcc 编译c++常见错误汇总
- linux下gcc编译的参数详细说明
- gcc最佳编译参数
- 最终编译的arm-none-eabi-gcc 的参数和脚本
- gcc编译参数-fPIC的一些问题
- gcc 链接(-l, -L)和编译(-include, -I)参数
- gcc编译参数:如何包含头文件和动态链接库
- gcc编译参数指定编码格式
- Linux系统中使用GCC 对CPU参数优化代码编译
- gcc编译参数
- gcc编译参数-fPIC的一些问题