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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。