linux下gcc命令的路径,Linux gcc命令的具体使用

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命令内容请搜素脚本之家以前的文章或下面相关文章,希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中更新gcc命令的步骤如下: 1. 首先,为了不覆盖原来的gcc命令,需要备份原来的相关内容。可以执行以下命令: ``` mv /usr/bin/gcc /usr/bin/gcc485 mv /usr/bin/g++ /usr/bin/g++485 mv /usr/bin/c++ /usr/bin/c++485 mv /usr/bin/cc /usr/bin/cc485 mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak ``` 这样可以将原来的gcc命令备份到相应的目录下。 2. 安装新版本的gcc后,新的gcc命令位于/usr/local/bin目录下。为了让系统能够找到新的gcc命令,需要创建软链接。可以执行以下命令: ``` ln -s /usr/local/bin/gcc /usr/bin/gcc ln -s /usr/local/bin/g++ /usr/bin/g++ ln -s /usr/local/bin/c++ /usr/bin/c++ ln -s /usr/local/bin/gcc /usr/bin/cc ln -s /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6 ``` 这样可以创建软链接,将新版本的gcc命令与系统路径关联起来。 3. 如果需要在特定目录下使用新版本的gcc,可以使用cd命令切换到相应的目录,然后执行解压命令。例如,如果要将gmp文件解压到目录gcc-10.1.0,可以执行以下命令: ``` cd /opt2/test_other/debug_test/ tar -jvxf gmp-6.1.0.tar.bz2 --directory=/usr/local/gcc-10.1.0/ ``` 这样可以将gmp文件解压到指定目录。 请注意,更新gcc命令可能需要root权限或管理员权限。在执行任何系统命令之前,请确保您具有足够的权限。 #### 引用[.reference_title] - *1* *2* *3* [linux升级gcc版本详细教程](https://blog.csdn.net/weixin_43354152/article/details/129247408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值