大家好,又见面了,我是你们的朋友全栈君。
01. 命令概述
gcc命令使用GNU推出的基于C/C 的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。
gcc是GNU编译器套件(GNU Compiler Collection),它包括了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-multiarch Display the target’s normalized GNU triplet, used as
a component in the library path
-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 输出到
-pie Create a position independent executable
-shared Create a shared library
-x 指定其后输入文件的语言
允许的语言包括:c c assembler none
‘none’意味着恢复默认行为,即根据文件的扩展名猜测
源文件的语言
04. 参考示例
4.1 生成默认的可执行文件
[deng@localhost bak]$ gcc test.c
[deng@localhost bak]$
将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
4.2 指定输出文件
[deng@localhost bak]$ gcc test.c -o test
[deng@localhost bak]$ ls
5th 6th 7th 8th 9th test test.c
[deng@localhost bak]$
将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
4.3 仅作预处理,不进行编译、汇编和链接
[deng@localhost bak]$ gcc -E test.c -o test.i
[deng@localhost bak]$
将test.c预处理输出test.i文件。
4.4 编译到汇编语言,不进行汇编和链接
[deng@localhost bak]$ gcc -S test.c -o test.s
[deng@localhost bak]$ ls
5th 6th 7th 8th 9th test test.c test.i test.s
[deng@localhost bak]$
将预处理输出文件test.i汇编成test.s文件。
4.5 编译、汇编到目标代码,不进行链接
[deng@localhost bak]$ gcc -c test.c -o test.o
[deng@localhost bak]$ ls
5th 6th 7th 8th 9th test test.c test.i test.o test.s
[deng@localhost bak]$
4.6 将目标代码生成可执行文件
[deng@localhost bak]$ gcc test.o -o test
[deng@localhost bak]$
将编译输出文件test.o链接成最终可执行文件test。
4.7 编译时指定优化级别
[deng@localhost bak]$ gcc -O1 test.c -o test
[deng@localhost bak]$
使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
4.8 多文件编译
[deng@localhost bak]$ gcc testfun.c test.c -o test
[deng@localhost bak]$
将testfun.c和test.c分别编译后链接成test可执行文件。
4.9 多文件编译方法二
[deng@localhost bak]$ gcc -c test.c
[deng@localhost bak]$ gcc -c testfun.c
[deng@localhost bak]$ gcc test.o testfun.o -o test
[deng@localhost bak]$
到此这篇关于Linux gcc命令的具体使用的文章就介绍到这了,更多相关Linux gcc命令内容请搜素脚本之家以前的文章或下面相关文章,希望大家以后多多支持脚本之家!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182470.html原文链接:https://javaforall.cn