linux的gcc使用方法_linux怎么用gcc编译

linux的gcc使用方法_linux怎么用gcc编译01.命令概述gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。gcc是GNU编译器套件(GNUCompilerCollection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和D语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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.net/182470.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat 激活码[免费获取][通俗易懂]

    (navicat 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月20日
    426
  • 女生学Java好找工作吗?女生适合编程吗?[通俗易懂]

    女生学Java好找工作吗?女生适合编程吗?[通俗易懂]大部分人对于Java程序员都有一个既定印象,那就是程序员都是男生。女程序员可以说是“稀有物种”,因为Java工作对于逻辑的要求很高,而这方面男生相对于女生比较有优势。但所有事情都不是绝对的,现在女生从事程序员工作的也越来越多,在某些方面相对于男生也有优势。今天,IT培训机构的小编就来给大家分析分析,女生学Java好找工作吗?女生适合编程吗?市场上现在对Java人才的需求明显是供不应求,Java薪资一哭看涨,企业需要Java人才。Java在生活中运用到各个领域,就业方向选择很宽广。女生选择学Java既有钱

    2022年7月7日
    26
  • MySQL命令rename:修改表名

    MySQL命令rename:修改表名rename命令用于修改表名。rename命令格式:renametable原表名to新表名;例如,在表MyClass名字更改为YouClass:  mysql>renametableMyClasstoYouClass;当你执行RENAME时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的ALTER和DROP权限,以及对新表的

    2022年5月25日
    45
  • js 除法取整数、取余数的方法

    js 除法取整数、取余数的方法**js除法取整数、取余数的方法取整1.取整//丢弃小数部分,保留整数部分parseInt(5/2)  //22.向上取整//向上取整,有小数就整数部分加1Math.ceil(5/2)  //33.向下取整//向下取整,丢弃小数部分Math.floor(5/2)  //24四舍五入//四舍五入Math.round(5/2)  //3取余//取余6%4  //**…

    2022年6月21日
    81
  • 跨链协议ChainBridge简明教程【EVM/Substrate】「建议收藏」

    跨链协议ChainBridge简明教程【EVM/Substrate】「建议收藏」ChainBridge是一个可扩展的跨链通信协议,目前兼容EMV和Substrate链,支持两个不同的EVM区块链、或者一个EVM链与一个Substrate链之间的跨链桥接与通证转移,支持ERC20、ERC721等多种类型的通证的跨链转移,以及普通数据的跨链转移。在这个教程中,我们将介绍ChainBridge的基本构成和安装方法,并利用ChainBridge实现Substrate原生资产和以太坊ERC20/ERC721通证之间的跨链转移。用自己熟悉的语言学习以太坊开发:Java|Php|

    2022年5月6日
    79
  • Python语言实现C-S架构–基于TCP通信[通俗易懂]

    Python语言实现C-S架构–基于TCP通信[通俗易懂]加粗样式@[TOC](http://blog.chinaunix.net/uid-26833883-id-3500874.html欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语…

    2022年8月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号