【linux】编译器使用

这篇具有很好参考价值的文章主要介绍了【linux】编译器使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. gcc ,g++ 编译器使用

a. 有关gcc的指令(g++同理)

2. .o 文件和库的链接方式

a. 链接方式

b. 动态库 和 静态库 优缺点对比

c. debug 版本 和 release 版本



【linux】编译器使用,linux

1. gcc ,g++ 编译器使用

a. 有关gcc的指令(g++同理)

注意:

linux下自带gcc编译器,如果要安装g++编译器;

  • sudo yum install -y gcc-g++ (普通用户)
  • gcc + 文件名

得到可执行文件

  • gcc + 文件名 + -o + 自定义文件名

得到的可执行文件可以自己命名

  • gcc + E + 文件名 + -o + 自定义文件名 (一般以 .i 结尾)

得到预处理后的文件可以自己命名

注意:

-E 告诉编译器,从现在阶段开始执行完预处理阶段就可以停下来了

  • gcc -S + 文件名 + -o + 自定义文件名 (一般以 .s 结尾)

得到编译后的文件可以自己命名

注意:

-S 告诉编译器,从现在阶段开始执行完编译阶段就可以停下来了(得到的是汇编代码

  • gcc -c + 文件名 + -o + 自定义文件名 (一般以 .o 结尾)

得到汇编后的文件可以自己命名(得到的是二进制代码

注意:

  1. 得到的文件(可重定位目标二进制文件)不可以直接执行(缺少链接这一步
  2. 链接链接的是库文件 (Linux下:.so(动态库) .a(静态库),windows下:.dll(动态库),.lib(静态库))
  3. linux系统下,库有自己的命名规则:libname.so (红色标明的位置才是库的名字)
  4. 编译型语言,所谓的安装包,是安装了 头文件 + 库文件
  5. linux系统下,默认只安装了动态库,没有安装静态库
  6. 函数的实现就是调用了库文件,库文件就是源文件(.c)经过一定翻译后,形成的一个文件(可以打包多个源文件,也可以达到隐藏源文件的效果
  7. 头文件提供方法的声明,库文件提供方法的实现
  8. 头文件所处位置:/usr/include

2. .o 文件和库的链接方式

a. 链接方式

  1. 动态链接

动态库不能缺失,一旦对应的动态库缺失,影响的不止一个程序

  1. 静态链接

在编译器使用的时候,静态链接时,会将自己的函数拷贝到目标文件中,如果静态库缺失了,不会影响目标程序

注意:

  1. 在 Linux系统下,默认采用的链接是动态链接(需要提供动态库
  2. 动态库只能使用动态链接,静态库只能使用静态链接
  1. -static 选项

采用静态链接(需要提供静态库

【linux】编译器使用,linux

注意:

  1. 安装 C语言 静态库(普通用户):
  • sudo yum install -y glibc-static
  1. 安装 C++ 静态库(普通用户)
  • sudo yum install -y libstdc++-static
  1. 如果只有动态库,没有静态库,-static 是不行的
  2. 如果没有动态库,只有静态库,那么只能用静态库 (本来编译器默认优先使用动态库,-static 是改变优先级,将所有的链接要求都改成静态链接,没有就会报错 )

b. 动态库 和 静态库 优缺点对比

  1. 动态库因为是共享库,可以节约资源(磁盘资源,内存资源,网络资源等)【优点】
  2. 动态库一旦缺失,目标程序很可能不能执行 【缺点】
  3. 静态库依赖小,缺失静态库不会对目标程序造成什么影响 【优点】
  4. 静态库体积大,资源消耗大 【缺点】

c. debug 版本 和 release 版本

注意:

  1. gcc 默认形成的可执行程序是以 release 版本发布出去的
  2. debug 版本 会比 release 版本 多加 debug 信息 ,所以体积上也会更大
  • gcc + 文件名 + -o + 目标文件名 + -g

形成的可执行文件是 debug版本 的

【linux】编译器使用,linux文章来源地址https://www.toymoban.com/news/detail-858809.html

到了这里,关于【linux】编译器使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux编译器——gcc/g++使用

    前言:  在上一篇,我们学习了关于文本编辑器 vim 的全部知识,今天给大家带来的是关于Linux编译器—gcc/使用的详细介绍。 本文目录  (一)温习程序的产生的过程 1、前言 2、程序的产生过程 3、🌜初步认识 gcc🌛 a) gcc的基本概念 b)gcc的基本特点 4、使用方法💻 (二)

    2023年04月17日
    浏览(36)
  • Linux--编译器-gcc/g++使用

    目录 前言 1.看一段样例  2.程序的翻译过程 1.第一个阶段:预处理 2.第二个阶段:编译 3.第三个阶段:汇编 4.第四个阶段:链接 3.程序的编译为什么是这个样子? 4. 关于编译器 5.链接(动静态链接) 1.首先,我们来看一段样例(见一下) 2.见完之后,我们来看一下程序的翻译

    2024年02月20日
    浏览(46)
  • 【Linux】编译器-gcc/g++使用

    个人主页 : zxctscl 文章封面来自:艺术家–贤海林 如有转载请先通知 在之前已经分享了 【Linux】vim的使用,这次来看看在云服务器上的编译器gcc。 我们先写一段简单的代码: 当我们进行编译的时候: 发现根本就编译不了。 这个是因为编译器版本的问题: 查看编译器的版

    2024年03月11日
    浏览(112)
  • Linux编译器--git、yum、gdb的使用

    雷纳斯-托瓦兹在开源了linux后全世界的很多人都要给linux提供代码,他需要合并代码。但是一个人的精力有限。无法完成,他就自己写了一个版本控制工具git。来控制自己的代码,并且也开源了。 linux和git就不断迭代,也不断进步。后来有人对git进行了商业化包装,形成了g

    2024年01月20日
    浏览(52)
  • Linux的学习之路:6、Linux编译器-gcc/g++使用

    本文主要是说一些gcc的使用,g++和gcc使用一样就没有特殊讲述。 目录 摘要 一、背景知识 二、gcc如何完成 1、预处理(进行宏替换) 2、编译(生成汇编) 3、汇编(生成机器可识别代码 4、链接(生成可执行文件或库文件) 5、函数库 6、静态库和动态库 7、gcc选项 三、思维导图

    2024年04月23日
    浏览(36)
  • 【Linux】Linux编译器 gcc/g++的使用&&初识动静态链接库

    ​ ​📝个人主页:@Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯 长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】Linux环境基础工具的基本使用及配置(yum、vim) 在上一篇 Linux 博客中,我们讲解了 vim 编辑器的使用,可以在 Linux 上写

    2024年02月11日
    浏览(34)
  • 【Linux】Linux编译器 gcc 的使用 | 动静态库的初步认识

    👑作者主页:@安 度 因 🏠学习社区:StackFrame 📖专栏链接:Linux

    2024年01月15日
    浏览(24)
  • 【Linux】编译器-gcc/g++与调试器-gdb的使用

    👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》 🌝 每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.gcc/g++语法 2.gcc的使用及编译器是如何\\\"翻译\\\"代码的? (1)预处理 (2)编译 (3)汇编

    2024年02月04日
    浏览(41)
  • 【Linux】编译器gcc和g++与调试器gdb的使用

    我们知道,一个程序被运行起来之后需要经历四个阶段然后才变成一个可执行的程序,他们分别为:预处理,编译,汇编和链接。下面我们将介绍这四个阶段的操作,测试代码如下: 1.1 预处理 预处理也叫预编译,程序在预处理阶段会完成如下操作: 展开头文件,将头文件中

    2024年02月07日
    浏览(28)
  • 【探索Linux】—— 强大的命令行工具 P.4(编译器 gcc/g++ 使用)

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim ,也相信大家都掌握的不错,今天博主带大家了解一下Linux编译器 gcc/g++ 使用, 下面话不多说坐稳扶好咱们要开车了!!

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包