Linux操作系统:GCC(GNU Compiler Collection)编译器

      在 Linux 系统中,gcc(GNU Compiler Collection)是一个非常强大的编译器,主要用于编译 C 语言程序。

     除了基本的编译和链接命令外,gcc还提供了许多选项和功能。

     以下是一些常用的 gcc命令及其功能:

1. 基本编译命令

编译源文件到目标文件:

gcc -c test.c -o test.o

 这条命令将 `test.c` 编译为目标文件 `test.o`。

编译并链接生成可执行文件:

gcc test.c -o test


  这条命令将 `test.c` 编译并链接为可执行文件 `test`。

2. 预处理

仅进行预处理:

gcc -E test.c -o test.i

  这条命令将 `test.c` 进行预处理,生成预处理文件 `test.i`。

3. 汇编

将源文件编译为汇编代码:

gcc -S test.c -o test.s

这条命令将 `test.c` 编译为汇编语言文件 `test.s`。

4. 调试信息


生成调试信息:

gcc -g test.c -o test


  这条命令在生成可执行文件时包含调试信息,便于使用调试器(如 `gdb`)进行调试。

5. 优化选项

启用优化:

gcc -O2 test.c -o test


  这条命令启用中等级别的优化,`-O1`、`-O2`、`-O3` 分别表示不同的优化级别。

6. 警告选项


启用所有警告:

gcc -Wall test.c -o test

这条命令启用所有常见的警告信息,帮助发现潜在问题。

7. 链接库

链接数学库:

gcc test.c -o test -lm


  这条命令在链接时包含数学库 `libm`。

 8. 指定标准

指定 C 语言标准:

gcc -std=c99 test.c -o test


  这条命令指定使用 C99 标准进行编译。

9. 多文件编译

编译多个源文件:

gcc file1.c file2.c -o output


  这条命令将多个源文件编译并链接为一个可执行文件。

10. 生成静态库

创建静态库:

ar rcs libmylib.a file1.o file2.o


这条命令将多个目标文件打包成一个静态库 `libmylib.a`。

11. 生成动态库

创建动态库:

gcc -shared -o libmylib.so file1.o file2.o


这条命令将多个目标文件打包成一个动态库 `libmylib.so`。

12. 其他常用选项


查看版本信息:

gcc --version


查看帮助信息:
 

gcc --help

这些是 `gcc` 在 Linux 系统中常用的一些命令和选项。根据自己的需求,可以组合使用这些选项来实现不同的编译和链接功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI大模型-文心大模型生成Mermaid格式】

我提问:请帮我画一个java动态代理的时序图,用mermaid的格式输出 文心回答:如下 当然,以下是使用Mermaid格式绘制的Java动态代理的时序图和流程图。 时序图 #mermaid-svg-ZTDOmFN7BfmRbfdK {font-family:"trebuchet ms"…

Python | Leetcode Python题解之第420题强密码检验器

题目: 题解: class Solution:def strongPasswordChecker(self, password: str) -> int:n len(password)has_lower has_upper has_digit Falsefor ch in password:if ch.islower():has_lower Trueelif ch.isupper():has_upper Trueelif ch.isdi…

数据结构之存储位置

p 和 "hello,world"存储在内存哪个区域?( ) (鲁科安全) int main() { char *p "hello,world"; return 0; } p是栈区,”hello,world”是.ro段 一个由C/C编译的程序,会将占用的内存分为几个部分:堆、栈、代…

02 创建拦截器

请求拦截器本质上是在请求之前调用的函数,用来对请求参数进行新增和修改 响应拦截器本质上是在响应之后调用的函数,用来对响应数据做点什么。 创建拦截器的步骤如下: 整个流程是 声明拦截器(一个对象,包含请求响应…

基于SpringBoot+Vue的智慧物业管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏:Java精选实战项目源码、Python精…

transformer模型进行英译汉,汉译英

上面是在测试集上的表现 下面是在训练集上的表现 上面是在训练集上的评估效果 这是在测试集上的评估效果,模型是transformer模型,模型应该没问题,以上的是一个源序列没加结束符和加了结束符的情况。 transformer源序列做遮挡填充的自注意力,这就让编码器的输出中每个token的语…

Python 虚拟环境安装使用(Anaconda 完整实操版)

1. 安装 安装 anaconda(包含 python 和 pip 等,支持创建及管理多个 python 虚拟环境) 注:miniconda 可能也可以,但是没用过,优先 anaconda 1.1 linux 1.1.1 ubuntu Mac、Windows 及其他 Linux 系统类似…

寄存器与内存

第三课:寄存器与内存、中央处理器(CPU)、指令和程序及高级 CPU 设计-CSDN博客 锁存器 引入 ABO0(开始状态)001(将A置1)110(将A置0)11 无论怎么做,都没法从1变…

大学生必看!60万人在用的GPT4o大学数学智能体有多牛

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者&#x1…

Mamba所需的causal-conv1d 和mamba-ssm库在哪下载?

背景介绍 参照 Mamba [state-spaces/mamba: Mamba SSM architecture (github.com)] github中提到的环境安装[Installation 一栏] [Option] pip install causal-conv1d>1.4.0: an efficient implementation of a simple causal Conv1d layer used inside the Mamba block.…

Python介绍

Python:一门优雅而强大的编程语言 在当今这个数字化时代,编程已经成为连接现实与虚拟世界的桥梁,而Python,作为一门广泛使用的编程语言,以其简洁的语法、丰富的库支持和广泛的应用领域,赢得了全球开发者的…

十个服务器中毒的常见特征及其检测方法

服务器作为企业的核心资源,其安全性至关重要。一旦服务器被病毒入侵,不仅会影响系统的正常运行,还可能导致数据泄露等严重后果。以下是十种常见的服务器中毒特征及其检测方法。 1. 系统性能下降 病毒常常占用大量的CPU和内存资源&#xff0…

Qt_窗口界面QMainWindow的介绍

目录 1、菜单栏QMenuBar 1.1 使用QMainWindow的准备工作 1.2 在ui文件中设计窗口 1.3 在代码中设计窗口 1.4 实现点击菜单项的反馈 1.5 菜单中设置快捷键 1.6 菜单中添加子菜单 1.7 菜单项中添加分割线和图标 1.8 关于菜单栏创建方式的讨论 2、工具栏QToolBar …

k8s Service 服务

文章目录 一、为什么需要 Service二、Kubernetes 中的服务发现与负载均衡 -- Service三、用例解读1、Service 语法2、创建和查看 Service 四、Headless Service五、集群内访问 Service六、向集群外暴露 Service七、操作示例1、获取集群状态信息2、创建 Service、Deployment3、创…

飞腾计算模块RapidIO性能测试

1、背景介绍 飞腾计算模块采用FT2000 64核处理器,搭配Tsi721 PCIE转RapidIO芯片,实现飞腾平台下的SRIO数据通信。操作系统采用麒麟信安,内核版本4.19.90. 2、驱动加载 驱动加载部分类似之前写过的X86平台下的RapidIO驱动加载,具…

ollama设置开机启动服务

在 Ubuntu 20.04 系统中创建一个 systemd 服务文件以管理一个名为 ollama 的自定义服务,您需要遵循以下步骤: 打开终端。创建一个新的服务文件 /etc/systemd/system/ollama.service。 下面是一个基本的 ollama.service 文件示例。您需要根据您的服务需求…

Rsync未授权访问漏洞复现及彻底修复

一、什么是 Rsync? Rsync 是一种广泛使用的文件传输工具,它允许系统管理员和用户通过局域网(LAN)或广域网(WAN)在计算机之间同步文件和目录。Rsync 支持通过本地或远程 shell 访问,也可以作为守…

【Linux】常用指令详解一(ls,-a,-l,-d,cd,pwd,mkdir,touch,rm,clear)

1.前言 读了一些Linux常用指令的博文,很可惜没读到一点点手把手教怎么操作的博文,所以写一篇手把手教适合初学者的Linux常用指令博文 Linux的命令是树状结构 输入这一句命令:yum install -y tree 即可以查看Linux树状目录结构 查看示例&am…

淘宝npm镜像源更新后,如何正常使用npm命令

文章目录 一. npm命令报错二. 更换淘宝最新npm镜像源三. npm命令使用 一. npm命令报错 使用npm install *****命令 报错 npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/express failed, reason: …

STM32快速复习(十二)FLASH闪存的读写

文章目录 一、FLASH是什么?FLASH的结构?二、使用步骤1.标准库函数2.示例函数 总结 一、FLASH是什么?FLASH的结构? 1、FLASH简介 (1)STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&…