Linux笔记_gcc
创始人
2024-05-26 04:34:08
0

Linux_gcc

  • 程序的翻译
  • 链接
  • make与makefile

关于gcc的一些笔记。

程序的翻译

gcc/g++是一个编译器。

预处理:头文件展开、条件编译、宏替换、去注释
编译:C语言汇编语言
汇编:汇编->可重定位目标二进制文件,不可以被执行,bin.obj,只把我们的代码进行翻译形成二进制目标文件
链接:将我们自己形成的.obj文件和库文件进行合并,形成可执行程序。

ESc iso
gcc -o 生成文件名称 源文件
-E 从现在开始进行程序的翻译,但做完预处理后结束 myfile.i
-S 从现在开始进行程序的翻译,做完编译后停下来 myfile.s
-c 从现在开始进行程序的汇编,做完汇编后停下来 myfile.o

链接

我们为什么能在Linux下进行C、C++代码的编写和编译?
答:Linux系统默认已经携带了语言级别的头文件和语言对应的库。

库分为动态库和静态库,本质上库也是文件。

静态库:libxxxxx.a
动态库:libxxxxx.so
区别库时把前缀和后缀去掉,中间的内容就是名字
windows下静态库为.lib文件,动态库为.dll文件
在我们安装VS2022/2019时,重要的一个工作就是下载对应的头文件和库文件!

我们所使用的指令有相当一部分是使用C写的!如何看待指令呢?指令就是程序、工具。

  1. 库分为静态库(专门让编译器对用户的程序进行静态链接的)和动态库(专门让编译器对用户的程序进行动态链接的)
  2. 静态库和静态链接:链接的时候,如果是静态链接,找到静态库,拷贝静态库中的我所需要的代码到我自己的可执行程序中。
  3. 动态库和动态链接:链接的时候,如果是动态链接,找到动态库,拷贝动态库中的我所需要的代码的地址到我自己的可执行程序中相关的位置。
  4. 静态链接成功:我们的程序,不依赖任何库,自己就可以独立运行。
  5. 动态链接成功:我们的程序,依赖动态库,一旦动态库缺失,我们的程序便无法运行。
  6. 静态库:因为自身拷贝的问题,比较浪费控件。
  7. 动态库:因为可以做到被大家共享方法,所以真正的实现永远都是在库中,程序内部只有地址,比较节省空间。
  8. 静态库vs动态库:Linux默认使用的是动态链接和动态库,gcc -static可以进行静态链接。

云服务器安装的Linux大多默认为动态链接,静态链接安装指令:yum install glibc-static libstdc+±static -y

假如我们是程序,当我们需要电脑时,可以选择去网吧(动态库),需要记住网吧(动态库)地址,也可以自己买一台电脑回家(静态库),要花(内存)买回家。

make与makefile

makefile是围绕依赖关系和依赖方法构建的一个自动化编译工具。

依赖关系与依赖方法
make:myfile.o
gcc -c -o myfile myfile.s
make:myfile.s
gcc -S -o myfile.s myfile.i
make:myfile.i
gcc -E -o myfile.i myfile.c

执行顺序类似“栈”,是根据依赖关系来寻找所需要的文件的

makefile:test.c
gcc -o test test.c
!PHONY:clean
clean:
rm -f test

添加信任用户
/etc/sudoers

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...