gcc使用手册--最全(编辑修改稿)内容摘要:

. iprefix prefix 指定 prefix作为后续 `iwithprefix39。 选项的前缀 . iwithprefix dir 把目录添加到第二包含路径中 .目录名由 prefix和 dir合并而成 ,这里 prefix被先前的 `iprefix39。 选项指定 . nostdinc 不要在标准系统目录中寻找头文件 .只搜索 `I39。 选项指定的目录 (以及当前目录 ,如果合适 ). 结合 使用 `nostdinc39。 和 `I39。 选项 ,你可以把包含文件搜索限制在显式指定的目录 . nostdinc++ 不要在 C++专用标准目录中寻找头文件 ,但是仍然搜索其他标准目录 . (当建立`libg++39。 时使用 这个选项 .) undef 不要预定义任何非标准宏 . (包括系统结构标志 ). E 仅运行 C预处理器 .预处理所有指定的 C源文件 ,结果送往标准输出或指定的输出文件 . C 告诉预处理器不要丢弃注释 .配合 `E39。 选项使用 . P 告诉预处理器不要产生 `line39。 命令 .配合 `E39。 选项 使用 . M [ MG ] 告诉预处理器输出一个适合 make的规则 ,用于描述各目标文件的依赖关系 .对于每个源文件 ,预处理器输出 一个 make规则 ,该规则的目标项 (target)是源文件对应的目标文件名 ,依赖项 (dependency)是源文件中 `include引用的所有文件 .生成的规则可以是单行 ,但如果太长 ,就用 `\39。 换行符续成多行 .规则 显示在标准输出 ,不产生预处理过的 C程序 . `M39。 隐含了 `E39。 选项 . `MG39。 要求把缺失的头文件按存在对待 ,并且假定他们和源程序文件在同一目录下 .必须 和 `M39。 选项一起用 . MM [ MG ] 和 `M39。 选项类似 ,但是输出结果仅涉及用户头文件 ,象这样 `include file39。 .忽略系统头文件如 `include file39。 . MD 和 `M39。 选项类似 ,但是把依赖信息输出在文件中 ,文件名通过把输出文件名末尾的`.o39。 替换为 `.d39。 产生 .同时继续指定的编译工作 `MD39。 不象 `M39。 那样阻止正常的编译任务 . Mach的实用工具 `md39。 能够合并 `.d39。 文件 ,产生适用于 `make39。 命令的单一的 依赖文件 . MMD 和 `MD39。 选项类似 ,但是输出结果仅涉及用户头文件 ,忽略系统头文件 . H 除了其他普通的操作 , GCC显示引用过的头文件名 . Aquestion(answer) 如果预处理器做条件测试 ,如 `if question(answer)39。 ,该选项可以断言 (Assert) question的答案是 answer. A39。 关闭一般用于描述目标机的标准断言 . Dmacro 定义宏 macro,宏的内容定义为字符串 `139。 . Dmacro=defn 定义宏 macro的内容为 `D39。 选项在 `U39。 选项之前处理 . Umacro 取消宏 macro. `U39。 选项在所有的 `D39。 选项之后处理 ,但是优先于任何 `include39。 或 `imacros39。 选项 . dM 告诉预处理器输出有效的宏定义列表 (预处理结束时仍然有效的宏定义 ).该选项需结合`E39。 选项使用 . dD 告诉预处理器把所有的宏定义传递到输出端 ,按照出现的顺序显示 . dN 和 `dD39。 选项类似 ,但是忽略宏的参量或内容 .只在输出端显示 `define name. 汇编器选项 (ASSEMBLER OPTION) Wa,option 把选项 option传递给汇编器 .如果 option含有逗号 ,就在逗号处分割成多个选项 . 连接器选项 (LINKER OPTION) 下面的选项用于编译器连接目标文件 ,输出可执行文件的时候 .如果编译器不进行 连接 ,他们就毫无意义 . objectfilename 如果某些文件没有特别明确的后缀 a special recognized suffix, GCC就认为他们是目标文件或库文件 . (根据文件内容 ,连接器能够区分目标文件和库文件 ).如果GCC执行连接操作 ,这些目标文件将成为 连接器的输入文件 . llibrary 连接名为 library的库文件 . 连接器在标准搜索目录中寻找这个库文件 ,库文件的真正名字是 `39。 .连接器会 当做文件名得到准确说明一样引用这个文件 . 搜索目录除了一些系统标准目录外 ,还包括用户以 `L39。 选项指定的路径 . 一般说来用这个方法找到的文件是库文件 即由目标文件组成的归档文件 (archive file).连接器处理归档文件的 方法是 :扫描归档文件 ,寻找某些成员 ,这些成员的符号目前已被引用 ,不过还没有被定义 .但是 ,如果连接器找 到普通的 目标文件 ,而不是库文件 ,就把这个目标文件按平常方式连接进来 .指定 `l39。 选项和指定文件名的唯一区别是 , `l选项用 `lib39。 和 `.a39。 把 library包裹起来 ,而且搜索一些目录 . lobjc 这个 l选项的特殊形式用于连接 Objective C程序 . nostartfiles 不连接系统标准启动文件 ,而标准库文件仍然正常使用 . nostdlib 不连接系统标准启动文件和标准库文件 .只把指定的文件传递给连接器 . static 在支持动态连接 (dynamic linking)的系统上 ,阻止连接共享库 .该选项在其他系统上无效 . shared 生成一个共享目标文件 ,他可以和其他目标文件连接产生可执行文件 .只有部分系统支持该选项 . symbolic 建立共享目标文件的时候 ,把引用绑定到全局符号上 .对所有无法解析的引用作出警告(除非用连接编辑选项 `Xlinker z Xlinker defs39。 取代 ).只有部分系统支持该选项 . Xlinker option 把选项 option传递给连接器 .可以用他传递系统特定的连接选项 , GNU CC无法识别这些选项 . 如果需 要传递携带参数的选项 ,你必须使用两次 `Xlinker39。 ,一次传递选项 ,另一次传递他的参数 . 例如 ,如果传递 `assert definitions39。 ,你必须写成 `Xlinker assert Xlinker definitions39。 ,而不能写成 `Xlinker assert definitions39。 ,因为这样会把整个 字符串当做一个参数传递 ,显然这不是连接器期待的 . Wl,option 把选项 option传递给连接器 .如果 option中含有逗号 ,就在逗号处分割成多个选项 . u symbol 使连接器认为取消了 symbol的符号定义 ,从而连接库模块以取得定义 .你可以使用多个 `u39。 选项 ,各自跟上不同的符号 ,使得连接器调入附加的库模块 . 目录选项 (DIRECTORY OPTION) 下列选项指定搜索路径 ,用于查找头文件 ,库文件 ,或编译器的某些成员 : Idir 在头文件的搜索路径列表中添加 dir 目录 . I 任何在 `I39。 前面用 `I39。 选项指定的搜索路径只适用于 `include file39。 这种情况。 他们不能用来搜索 `include file39。 包含的头文件 . 如果用 `I39。 选项指定的搜索路径位于 `I39。 选项后面 ,就可以在这些路径中搜索所有的 `include39。 指令 . (一般说来 I选项就是这么用的 .) 还有 , `I39。 选项能够阻止当前目录 (存放当前输入文件的地方 )成为搜索 `include file39。 的第一选择 .没有办法克服 `I39。 选项的这个效应 .你可以指定 `I.39。 搜索那个目录 ,它在调用编译器时是当前目录 .这和预处理器的默认行为不完全一样 ,但是结果通常 令人满意 . `I39。 不影响使用系统标准目录 ,因此 , `I39。 和 `nostdinc39。 是不同的选项 . Ldir 在 `l39。 选项的搜索路径列表中添加 dir目录 . Bprefix 这个选项指出在何处寻找可执行文件 ,库文件 ,以及编译器自己的数据文件 . 编译器驱动程序需要执行某些下面的子程序 : `cpp39。 , `cc139。 (或 C++的 `cc1plus39。 ), `as39。 和 `ld39。 .他把 prefix当作欲执行的程序的 前缀 ,既可以包括也可以不包括 `machine/version/39。 . 对于要运行的子程序 ,编译器驱动程序首先试着加上 `B39。 前缀 (如果存在 ).如果没有找到文件 ,或没有指定 `B39。 选项 ,编译器接着会试验两个标准前缀 `/usr/lib/gcc/39。 和 `/usr/local/lib/gcclib/39。 .如果仍然没能够找到所需文件 ,编译器就在`PATH39。 环境变量 指定的路径中寻找没加任何前缀的文件名 . 如果有需要 ,运行时 (runtime)支持文件 `39。 也在 `B39。 前缀的搜索范围之内 . 如果这里没有找到 ,就在上面提到的两个标准前缀中寻找 ,仅此而已 .如果上述方法没有找到这个文件 ,就不连接他了 .多数 情况的多数机器上 , `39。 并非必不可少 . 你可以通过环境 变量 GCC_EXEC_PREFIX获得近似的效果。 如果定义了这个变量 ,其值就和上面说的 一样用做前缀 .如果同时指定了 `B39。 选项和 GCC_EXEC_PREFIX变量 ,编译器首先使用 `B39。 选项 ,然后才尝试环境变量值 . 警告选项 (WARNING OPTION) 警告是针对程序结构的诊断信息 ,程序不一定有错误 ,而是存在风险 ,或者可能存在 错误 . 下列选项控制 GNU CC产生的警告的数量和类型 : fsyntaxonly 检查程序中的语法错误 ,但是不产生输出信息 . w 禁止所有警告信息 . Wnoimport 禁止所有关于 import的警告信息 . pedantic 打开完全服从 ANSI C标准所需的全部警告诊断。 拒绝接受采用了被禁止的语法扩展的程序 . 无论有没有这个选项 ,符合 ANSI C标准的程序应该能够被正确编译 (虽然极少数程序需要 `ansi39。 选项 ).然而 ,如果没有这个选项 ,某些 GNU扩展和传统 C特性也得到支持 .使用这个选项可以拒绝这些程序 .没有理由 使用这个选项 ,他存在只是为了满足一些书呆子 (pedant). 对于替选关键字 (他们以 `__39。 开始和结束 ) `pedantic39。 不会产生警告信息 . Pedantic 也不警告跟在 __extension__后面的表达式 .不过只应该在系统头文件中使用这种转义措施 ,应用程序最好 避免 . pedanticerrors 该选项和 `pedantic39。 类似 ,但是显示错误而不是警告 . W 对下列事件显示额外的警告信息 : * 非易变自动变量 (nonvolatile automatic variable)可能在调用 longjmp时发生改变 . 这些警告仅在优化编译时发生 . 编译器只知道对 setjmp的调用 ,他不可能知道会在 哪里调用 longjmp,事实上一个 信号处理例程可以在程序的任何地点调用他 .其结果是 ,即使程序没有问题 ,你也可能会得到警告 ,因为无法在可能出现问题 的地方调用 longjmp. * 既可以返回值 ,也可以不返回值的函数 . (缺少结尾的函数体被看作不返回函数值 )例如 ,下面的函数将导致这种警告 : foo (a) { if (a 0) return a。 } 由于 GNU CC不知道某些函数永不返回 (含有 abort和 longjmp),因此有可能出现 虚假警告 . * 表达式语句或 逗号表达式的左侧没有产生作用 (side effect).如果要防止这种警告 ,应该把未使用的表达式强制转换 为 void类型 .例如 ,这样的表达式 `x[i,j]39。 会导致警告 ,而 `x[(void)i,j]39。 就不会 . * 无符号数用 `39。 或 `=39。 和零做比较 . Wimplicitint 警告没有指定类型的声明 . Wimplicitfunctiondeclaration 警告在声明之前就使用的函数 . Wimplicit 同 Wimplicitint和 Wimplicitfunctiondeclaration. Wmain 如果把 main函数声明或定义成奇怪的类型 ,编译器就发出警告 .典型情况下 ,这个函数用于外部连接 , 返回 int数值 ,不需要参数 ,或指定两个参数 . Wreturntype 如果函数定义了返回类型 ,而默认类型是 int。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。