Linux gcc命令的具体使用
01.命令概述
gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。
gcc是GNU编译器套件(GNUCompilerCollection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和D语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。
02.命令格式
用法:gcc[选项]文件...
03.常用选项
-pass-exit-codes在某一阶段退出时返回最高的错误码 --help显示此帮助说明 --target-help显示目标机器特定的命令行选项 --help={common|optimizers|params|target|warnings|[^] {joined|separate|undocumented}}[,...] 显示特定类型的命令行选项 (使用‘-v--help'显示子进程的命令行参数) --version显示编译器版本信息 -dumpspecs显示所有内建spec字符串 -dumpversion显示编译器的版本号 -dumpmachine显示编译器的目标处理器 -print-search-dirs显示编译器的搜索路径 -print-libgcc-file-name显示编译器伴随库的名称 -print-file-name=<库>显示<库>的完整路径 -print-prog-name=<程序>显示编译器组件<程序>的完整路径 -print-multiarchDisplaythetarget'snormalizedGNUtriplet,usedas acomponentinthelibrarypath -print-multi-directory显示不同版本libgcc的根目录 -print-multi-lib显示命令行选项和多个版本库搜索路径间的映射 -print-multi-os-directory显示操作系统库的相对路径 -print-sysroot显示目标库目录 -print-sysroot-headers-suffix显示用于寻找头文件的sysroot后缀 -Wa,<选项>将逗号分隔的<选项>传递给汇编器 -Wp,<选项>将逗号分隔的<选项>传递给预处理器 -Wl,<选项>将逗号分隔的<选项>传递给链接器 -Xassembler<参数>将<参数>传递给汇编器 -Xpreprocessor<参数>将<参数>传递给预处理器 -Xlinker<参数>将<参数>传递给链接器 -save-temps不删除中间文件 -save-temps=不删除中间文件 -no-canonical-prefixes生成其他gcc组件的相对路径时不生成规范化的 前缀 -pipe使用管道代替临时文件 -time为每个子进程计时 -specs=<文件>用<文件>的内容覆盖内建的specs文件 -std=<标准>指定输入源文件遵循的标准 --sysroot=<目录>将<目录>作为头文件和库文件的根目录 -B<目录>将<目录>添加到编译器的搜索路径中 -v显示编译器调用的程序 -###与-v类似,但选项被引号括住,并且不执行命令 -E仅作预处理,不进行编译、汇编和链接 -S编译到汇编语言,不进行汇编和链接 -c编译、汇编到目标代码,不进行链接 -o<文件>输出到<文件> -pieCreateapositionindependentexecutable -sharedCreateasharedlibrary -x<语言>指定其后输入文件的语言 允许的语言包括:cc++assemblernone ‘none'意味着恢复默认行为,即根据文件的扩展名猜测 源文件的语言
04.参考示例
4.1生成默认的可执行文件
[deng@localhostbak]$gcctest.c [deng@localhostbak]$
将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
4.2指定输出文件
[deng@localhostbak]$gcctest.c-otest [deng@localhostbak]$ls 5th6th7th8th9thtesttest.c [deng@localhostbak]$
将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
4.3仅作预处理,不进行编译、汇编和链接
[deng@localhostbak]$gcc-Etest.c-otest.i [deng@localhostbak]$
将test.c预处理输出test.i文件。
4.4编译到汇编语言,不进行汇编和链接
[deng@localhostbak]$gcc-Stest.c-otest.s [deng@localhostbak]$ls 5th6th7th8th9thtesttest.ctest.itest.s [deng@localhostbak]$
将预处理输出文件test.i汇编成test.s文件。
4.5编译、汇编到目标代码,不进行链接
[deng@localhostbak]$gcc-ctest.c-otest.o [deng@localhostbak]$ls 5th6th7th8th9thtesttest.ctest.itest.otest.s [deng@localhostbak]$
4.6将目标代码生成可执行文件
[deng@localhostbak]$gcctest.o-otest [deng@localhostbak]$
将编译输出文件test.o链接成最终可执行文件test。
4.7编译时指定优化级别
[deng@localhostbak]$gcc-O1test.c-otest [deng@localhostbak]$
使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
4.8多文件编译
[deng@localhostbak]$gcctestfun.ctest.c-otest [deng@localhostbak]$
将testfun.c和test.c分别编译后链接成test可执行文件。
4.9多文件编译方法二
[deng@localhostbak]$gcc-ctest.c [deng@localhostbak]$gcc-ctestfun.c [deng@localhostbak]$gcctest.otestfun.o-otest [deng@localhostbak]$
到此这篇关于Linuxgcc命令的具体使用的文章就介绍到这了,更多相关Linuxgcc命令内容请搜素毛票票以前的文章或下面相关文章,希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。