gcc 编译控制选项

gcc 编译控制选项
前面已经讲过, gcc 的基本用法是:
$ gcc [选项] [文件名]
gcc 有很多编译控制选项,使得 gcc 可以根据不同的参数进行不同的编译处理,可供 gcc
调用的参数大约有 100 来个,但实际使用中并不会用到这么的多选项和参数。这里只介绍一
些最基本和常用的控制选项以及参数,如表 10.3 所列。
表 10.3 gcc 常用选项和参数

名称 功能描述
-c 只编译不链接。编译器只是将输入的.c 等源代码文件生成.o 为后缀的目标文件,通
常用于编译不包含主程序的子程序文件
-S 只对文件进行编译,不汇编和链接
-E 只对文件进行预处理,不编译汇编和链接
-o output_filename 确定输出文件的名称为 output_filename,这个名称不能和源文件同名。如果不给出
这个选项, gcc 就给出预设的可执行文件 a.out
-g 产生符号调试工具(GNU 的 gdb)所必要的符号信息,要想对源代码进行调试,就必
须加入这个选项。 g 也分等级,默认是-g2, -g1 是最基本的, -g3 包含宏信息
-DFOO=BAR 在命令行定义预处理宏 FOO,值为 BAR
-O 对程序进行优化编译、链接。采用这个选项,整个源代码会在编译、链接过程中进
行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速
度就相应地要慢一些
-ON 指定代码的优化等级为 N,可取值为 0、 1、 2、 3; O0 没有优化, O3 优化级别最高
-Os 使用了-O2 的优化部分选项,同时对代码尺寸进行优化
-Idirname 将 dirname 目录加入到程序头文件搜索目录列表中,是在预编译过程中使用的参数
-L dirname 将 dirname 目录加入到库文件的搜索目录列表中
-l FOO 链接名为 libFOO 的函数库
-static 链接静态库
-ansi 支持 ANSI/ISO C 的标准语法,取消 GNU 语法中与该标准相冲突的部分
-w 关闭所有警告,不建议使用
-W 开启所有 gcc 能提供的警告
-werror 将所有警告转换为错误,开启该选项,遇到警告都会中止编译
-v 显示 gcc 执行时执行的详细过程, 以及 gcc 和相关程序的版本号
时间: 2024-11-04 19:09:52

gcc 编译控制选项的相关文章

Linux下gcc编译控制动态库导出函数小结

Linux下gcc编译控制动态库导出函数小结 来源 https://www.cnblogs.com/lidabo/p/5703890.html 根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility("hidden"))) 就是说将不公开的函数都加上这个属性,没加的就是可见的 2. gcc 在链接时设置 -fvisibility=hidden,则不加 v

gcc编译 汇编 选项

gcc生成main.out的步骤分解:<blockquote>main.c-----(-S 编译)-------->main.s-------(-c 汇编)------->main.o(指令码)-------(连接)----->main.out |                   ^ |                   | (-E )                (-S) |                  | main.cc  </blockquote&g

GCC编译命令常用选项

GCC是GUN Compiler Collection的简称,除编译程序外,还包含其他相关工具.GCC可将高级语言编写的源代码构建成计算机直接执行的二进制代码.GCC是Linux平台下最常用的编译程序,也是Linux平台编译器的事实标准.GCC支持四十余种不同目标体系结构(如X86系列.ARM及PowerPC等),可运行在不同的操作系统上(如Linux.Solaris及Windows等).GCC既支持基于宿主的开发(即在A平台上编译该平台使用的程序),也支持交叉编译(即在A平台上编译供B平台使用

Linux 下 GCC 编译共享库控制导出函数的方法

通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪些函数是 DLL 内部自己使用:而在 Linux 下不存在 dllexport 这样的指示字,默认情况下 GCC 编译 SO(共享库)时把代码中的所有函数都导出了,那么如何实现 Windows 下的那种效果,由我们自己来控制共享库导出函数呢? 其实在 Linux 下也有类似的控制机制.在 GCC 帮

GCC 编译详解 (转)

朋友用C调用lua的库,但是不能直接调用源码,必须要编译成静态链接库才可以使用,问学长说是因为要分开编译链接.这就不理解了,于是转一篇讲编译的文章学习一下,补补课… GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Java.Fortran.Pascal.Modula-3和Ada等多种语言,而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种

linux下gcc编译多个源文件、gdb的使用方法(转)

原文 http://www.cnblogs.com/jiu0821/p/4483804.html 一. gcc常用编译命令选项 假设源程序文件名为test.c. 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理.汇编.编译并链接形成可执行文件.这里未指定输出文件,默认输出为a.out. 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理.汇编.编译并链接形成可执行文件test.-o选项用来指定输出文件的文件名. 3. 选项 -

GCC 编绎选项 转

gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告:           -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat           -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration           -Wcomment -Wformat -Wmain (only for C/ObjC and un

linux下gcc编译多个源文件、gdb的使用方法

一. gcc常用编译命令选项 假设源程序文件名为test.c. 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理.汇编.编译并链接形成可执行文件.这里未指定输出文件,默认输出为a.out. 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理.汇编.编译并链接形成可执行文件test.-o选项用来指定输出文件的文件名. 3. 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test

GCC 编译优化指南

前言 网上关于编译优化的文章很多,但大多零零散散,不成体系,本文试图给出一个完整和清晰的优化思路,同时提供在实践中如何进行优化的详尽参考.但是,在介绍所有优化知识之前首先引用LFS-Book中的一句忠告:"使用编译器优化得到的小幅度性能提升,与它带来的风险相比微不足道".你还要进行优化吗? %@&#=^%~*# ... OK, crazy guy! Let's Go!! 在继续之前,作者还是奉劝各位:如果追求极致的优化,那么它将是一件既耗时又麻烦的事情,你会陷入无止尽的测试.测