码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • gcc/g++的使用


    目录

    1. 什么是gcc/g++?

    2. gcc是如何完成转换?

    1. 预处理

    2. 编译

    3. 汇编

     4. 链接

    库分为静态库和动态库


    1. 什么是gcc/g++?

    gcc/g++是一种编译器,用来将C/C++语言转换成机器语言

    2. gcc是如何完成转换?

    格式:gcc [选项] 编译的文件 [选项] [目标文件]

    如果直接进行gcc  [编译文件] -o [目标文件],则会直接生成可执行文件

    gcc将高级语言转换成机器语言分为四个步骤:

    1. 预处理

    预处理中主要包含了四个步骤

    • 头文件的展开
    • 宏替换
    • 注释替换
    • 条件编译

    格式:gcc -E test.c -o test.i

     

     我们可以看见预处理阶段完成了我们所说的所有步骤

    2. 编译

    编译的最主要功能将高级语言转换成汇编语言

    格式:gcc -S test.i -o test.s

     汇编语言比起高级语言更加简洁

    3. 汇编

    编译的最重要步骤是将汇编语言转换成二进制语言,也就是机器可识别代码

    格式:gcc -c test.s -o test.o

     4. 链接

    在生成.o结尾的文件后就标识着编译成功,接着我们就需要进行链接

    格式:gcc test.o -o test

     

     这里我们需要涉及一个重要的知识点,那就是我们为什么要进行链接?

    我们已经将我们的代码编译成功了,链接的作用又是什么呢?

     我们可以发现我们所写的代码中,包含了printf函数,而print这个函数是我们所实现的吗?明显不是,那我们调用这个函数就需要完成这个函数的实现,又因为我们没有完成这个函数的实现,但是库中实现了这个函数,因此我们在进行链接的时候是链接的那些库,以供我们完成运行。

    库分为静态库和动态库

    静态库是指编译链接时,将所实现的函数代码全部加入进可执行文件中,因此生成的文件比较大,但是在运行中就不需要在链接库函数

    动态库是指编译链接时,没有将所实现的函数代码加入在可执行文件中,而是在链接期间链接了所需的库,这样可以节省空间

    在Linux中,默认链接的是动态库

     而我们也可以主动链接静态库

     我们发现当链接静态库时,内存大小几乎是链接动态库的100倍


     

  • 相关阅读:
    自动化专业之半导体行业入门指南
    基于 SpringBoot + MyBatis 的博客系统
    简单理解路由重分发(用两路由器来理解)
    [Python从零到壹] 五十一.图像增强及运算篇之图像灰度直方图对比分析万字详解
    不只是负载均衡,活字格智能集群的架构与搭建方案
    FFT64点傅里叶变换verilog蝶形运算,代码和视频
    [采访对象征集]内容聚合平台从业人员采访
    git远端协同开发、解决冲突、分支合并、gitlab使用、远程仓库回滚、为开源项目贡献代码、git工作流,git pull和git fetch,变基
    opengl学习glBindAttribLocation
    Android进阶宝典 -- 手写RecyclerView分页组件
  • 原文地址:https://blog.csdn.net/Rinki123456/article/details/126022558
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号