系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 系统教程 > Linux教程 > 详细页面

Linux gcc命令的具体使用

时间:2020-02-20来源:系统城作者:电脑系统城

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. 常用选项


 
  1. -pass-exit-codes 在某一阶段退出时返回最高的错误码
  2. --help 显示此帮助说明
  3. --target-help 显示目标机器特定的命令行选项
  4. --help={common|optimizers|params|target|warnings|[^]
  5. {joined|separate|undocumented}}[,...]
  6. 显示特定类型的命令行选项
  7. (使用‘-v --help'显示子进程的命令行参数)
  8. --version 显示编译器版本信息
  9. -dumpspecs 显示所有内建 spec 字符串
  10. -dumpversion 显示编译器的版本号
  11. -dumpmachine 显示编译器的目标处理器
  12. -print-search-dirs 显示编译器的搜索路径
  13. -print-libgcc-file-name 显示编译器伴随库的名称
  14. -print-file-name=<库> 显示 <库> 的完整路径
  15. -print-prog-name=<程序> 显示编译器组件 <程序> 的完整路径
  16. -print-multiarch Display the target's normalized GNU triplet, used as
  17. a component in the library path
  18. -print-multi-directory 显示不同版本 libgcc 的根目录
  19. -print-multi-lib 显示命令行选项和多个版本库搜索路径间的映射
  20. -print-multi-os-directory 显示操作系统库的相对路径
  21. -print-sysroot 显示目标库目录
  22. -print-sysroot-headers-suffix 显示用于寻找头文件的 sysroot 后缀
  23. -Wa,<选项> 将逗号分隔的 <选项> 传递给汇编器
  24. -Wp,<选项> 将逗号分隔的 <选项> 传递给预处理器
  25. -Wl,<选项> 将逗号分隔的 <选项> 传递给链接器
  26. -Xassembler <参数> 将 <参数> 传递给汇编器
  27. -Xpreprocessor <参数> 将 <参数> 传递给预处理器
  28. -Xlinker <参数> 将 <参数> 传递给链接器
  29. -save-temps 不删除中间文件
  30. -save-temps=<arg> 不删除中间文件
  31. -no-canonical-prefixes 生成其他 gcc 组件的相对路径时不生成规范化的
  32. 前缀
  33. -pipe 使用管道代替临时文件
  34. -time 为每个子进程计时
  35. -specs=<文件> 用 <文件> 的内容覆盖内建的 specs 文件
  36. -std=<标准> 指定输入源文件遵循的标准
  37. --sysroot=<目录> 将 <目录> 作为头文件和库文件的根目录
  38. -B <目录> 将 <目录> 添加到编译器的搜索路径中
  39. -v 显示编译器调用的程序
  40. -### 与 -v 类似,但选项被引号括住,并且不执行命令
  41. -E 仅作预处理,不进行编译、汇编和链接
  42. -S 编译到汇编语言,不进行汇编和链接
  43. -c 编译、汇编到目标代码,不进行链接
  44. -o <文件> 输出到 <文件>
  45. -pie Create a position independent executable
  46. -shared Create a shared library
  47. -x <语言> 指定其后输入文件的语言
  48. 允许的语言包括:c c++ assembler none
  49. ‘none'意味着恢复默认行为,即根据文件的扩展名猜测
  50. 源文件的语言

04. 参考示例

4.1 生成默认的可执行文件


 
  1. [deng@localhost bak]$ gcc test.c
  2. [deng@localhost bak]$

将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

4.2 指定输出文件


 
  1. [deng@localhost bak]$ gcc test.c -o test
  2. [deng@localhost bak]$ ls
  3. 5th 6th 7th 8th 9th test test.c
  4. [deng@localhost bak]$
  5.  

将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

4.3 仅作预处理,不进行编译、汇编和链接


 
  1. [deng@localhost bak]$ gcc -E test.c -o test.i
  2. [deng@localhost bak]$

将test.c预处理输出test.i文件。

4.4 编译到汇编语言,不进行汇编和链接


 
  1. [deng@localhost bak]$ gcc -S test.c -o test.s
  2. [deng@localhost bak]$ ls
  3. 5th 6th 7th 8th 9th test test.c test.i test.s
  4. [deng@localhost bak]$

将预处理输出文件test.i汇编成test.s文件。

4.5 编译、汇编到目标代码,不进行链接


 
  1. [deng@localhost bak]$ gcc -c test.c -o test.o
  2. [deng@localhost bak]$ ls
  3. 5th 6th 7th 8th 9th test test.c test.i test.o test.s
  4. [deng@localhost bak]$

4.6 将目标代码生成可执行文件


 
  1. [deng@localhost bak]$ gcc test.o -o test
  2. [deng@localhost bak]$

将编译输出文件test.o链接成最终可执行文件test。

4.7 编译时指定优化级别


 
  1. [deng@localhost bak]$ gcc -O1 test.c -o test
  2. [deng@localhost bak]$

使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

4.8 多文件编译


 
  1. [deng@localhost bak]$ gcc testfun.c test.c -o test
  2. [deng@localhost bak]$

将testfun.c和test.c分别编译后链接成test可执行文件。

4.9 多文件编译方法二


 
  1. [deng@localhost bak]$ gcc -c test.c
  2. [deng@localhost bak]$ gcc -c testfun.c
  3. [deng@localhost bak]$ gcc test.o testfun.o -o test
  4. [deng@localhost bak]$

到此这篇关于Linux gcc命令的具体使用的文章就介绍到这了,更多相关Linux gcc命令内容请搜素我们以前的文章或下面相关文章,希望大家以后多多支持我们!

本文标题: Linux gcc命令的具体使用
分享到:

相关信息

  • linux 文件权限怎么解析

    常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x...

    2024-07-07

  • 如何使用WPSeku找出 WordPress 安全问题?

    然而,如果我们遵循通常的 WordPress 最佳实践,这些安全问题可以避免。在本篇中,我们会向你展示如何使用 WPSeku,一个 Linux 中的 WordPress 漏洞扫描器,它可以被用来找出你安装...

    2024-07-03

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载