当前位置: 首页 > news >正文

【linux】——gcc/g++,make/makefile的简单使用

目录

1.gcc的基本使用

2.Linux下的静态库和动态库的理解

3.Linux项目自动化构建工具——make/makefile


1.gcc的基本使用

gcc是专门用来编译c语言的

g++是专门用来编译c++的,但是g++也能够用来编译c语言

预处理(进行宏替换)

预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
预处理指令是以#号开头的代码行。
实例: gcc –E hello.c –o hello.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。(也就是只预处理完就停止)
选项“-o”是指目标文件,“.i”文件为已经经历过预处理的c原始程序。(生成的文件是预处理后的文件)
编译(生成汇编)
在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
实例:gcc –S hello.i –o hello.s
汇编(生成机器可识别代码)
汇编阶段是把编译阶段生成的“.s”文件转成目标文件
读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
实例:gcc –c hello.s –o hello.o
连接(生成可执行文件或库文件)
在成功编译之后,就进入了链接阶段。
实例:gcc  hello.s –o hello.o
或者直接:gcc  hello.s 会生成一个a.out文件

2.Linux下的静态库和动态库的理解

g++的基本使用过程和gcc一样

谈谈链接:

Linux下已经携带了语言级别的头文件和语言对应的库。

库分为两种(库的本质也是一个文件)

linux下划分的

1.静态库

labXXXX.a

2.动态库

labXXX.so

windows下划分:

1.静态库(xxxx.lab)

2.动态库(xxxx.dll)

我们用的指令很大一部分是用c写的

如何看待指令呢?

指令就是程序,工具。指令,程序,工具其实就是一回事。

1.库分为静态库(专门让编译器,对用户的程序进行静态链接的)和动态库(专门让编译器,对用户的程序进行动态链接的)

2.静态库和静态链接:链接的时候,如果是静态链接,找到静态库,拷贝静态库中我所需要的代码到我自己的的可执行程序中。

3.动态库和动态链接:链接的时候,如果是动态链接,找到动态库,拷贝动态库中我所需要的代码的地址到我自己的可执行程序中的相关位置。

4.静态链接成功:我们的程序,不依赖任何库,自己就可以独立运行

5.动态链接成功:我们的程序,还是依赖动态库,一旦动态库缺失,我们的程序无法运行。

6.静态库:因为自身拷贝的问题,比较浪费空间

7.动态库:因为可以做到被大家共享方法,所以真正的实现永远是在库中,程序内部只有地址,比较节省空间。

8.静态库vs动态库:Linux系统默认的是动态库和动态链接

3.Linux项目自动化构建工具——make/makefile

1.make是一个命令

m(M)akefie是一个文件——在当前的源代码路径下

2.规则

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

 以上只是简单的makefile的使用

相关文章:

【linux】——gcc/g++,make/makefile的简单使用

目录 1.gcc的基本使用 2.Linux下的静态库和动态库的理解 3.Linux项目自动化构建工具——make/makefile 1.gcc的基本使用 gcc是专门用来编译c语言的 g是专门用来编译c的,但是g也能够用来编译c语言 预处理(进行宏替换) 预处理功能主要包括宏…...

追梦之旅【数据结构篇】——详解C语言动态实现带头结点的双向循环链表结构

详解C语言动态实现带头结点的双向循环链表结构~😎前言🙌预备小知识💞链表的概念及结构🙌预备小知识💞链表的概念及结构🙌带头结点的双向循环链表结构🙌整体实现内容分析💞1.头文件编…...

华为OD机试真题Python实现【水仙花数 2】真题+解题思路+代码(20222023)

水仙花数 2 题目 给定非空字符串 s,将该字符串分割成一些子串 使每个子串的 ASCII 码值的和均为水仙花数 若分割不成功则返回 0若分割成功且分割结果不唯一 则返回-1若分割成功且分割结果唯一 则返回分割后子串的数目 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机…...

【原创】java+swing+txt学生学籍管理系统设计与实现

今天我们来介绍如何使用javaswingtxt来开发一个学籍管理系统。对的,你没看错,我们今天不用mysql,我们使用txt这个文本来进行数据存储,主要考察对文件读写的操作。 功能分析: 我们系统不要求做的很复杂,只…...

GCN项目实战1-SimGNN

文章目录SimGNN:快速图相似度计算的神经网络方法1. 数据2. 模型2.1 python文件功能介绍2.2 重要函数和类的实现SimGNN:快速图相似度计算的神经网络方法 原论文名称:SimGNN: A Neural Network Approach to Fast Graph Similarity Computation…...

经过深思熟虑后的接口测试自动化的总结与思考

序近期看到阿里云性能测试 PTS 接口测试开启免费公测,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接口测试领域的一些方法和心得,希望大家一起讨论和分享,内容包括但不仅限于:服务端接口测试介绍接…...

电脑自带的录屏放在哪里了?轻松弄懂,看这篇文章就明白了

有很多小伙伴有这个疑问,电脑自带的录屏放在哪里了?其实,电脑自带的录屏工具并不是所有电脑都要,具体要看你的电脑品牌和操作系统,Windows系统和Mac系统的电脑都自带了录屏工具,下面跟着小编一起来看看吧。…...

华为OD机试真题Java实现【字符串分割】真题+解题思路+代码(20222023)

字符串分割 给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含…...

【数据库】Apache Doris : 一个开源 MPP 数据库的架构与实践

文章目录Doris 背景介绍一、Doris二、Doris 定位适用场景 & 案例介绍一、适用场景二、具体案例Doris 整体架构一、Doris 整体架构二、Doris 数据分布三、Doris 的使用方式Doris 关键技术一、数据可靠性二、易运维三、MySQL 兼容性四、支持 MPPDoris 数据模型一、Doris 数据…...

day49【代码随想录】动态规划之最长公共子序列、不相交的线、最大子序和、判断子序列

文章目录前言一、最长公共子序列(力扣1143)二、不相交的线(力扣1035)三、最大子序和(力扣53)四、判断子序列(力扣392)前言 1、最长公共子序列 2、不相交的线 3、最大子序和 4、判断…...

华为OD机试真题Python实现【字母消消乐】真题+解题思路+代码(20222023)

字母消消乐 题目 游戏规则: 输入一个只包含英文字母的字符串, 字符串中的两个字母如果相邻且相同,就可以消除。 在字符串上反复执行消除的动作, 直到无法继续消除为止,此时游戏结束。 输出最终得到的字符串长度。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试…...

程序中的日期使用问题-格式转化:SimpleDateFormat、org.apache.commons.lang3.time.DateUtils

前言 日期使用问题主要是格式转换的问题 场景:通过excel导入数据,其中一个字段为出生日期,需要对字段值进行合法性校验 博客地址:芒果橙的个人博客 【http://mangocheng.com】 一、个人浅谈日期 时间日期作为一个基础的标识和维度…...

C++——map和set的应用总结

目录1. 关联式容器2. 键值对3. 树形结构的关联式容器3.1 set3.1.1 set的介绍3.1.2 set的使用3.2 multiset3.2.1 multiset的介绍3.2.2 multiset的使用3.3 map3.3.1 map的介绍3.3.2 map的使用operator[]3.4 multimap3.4.1 multimap的介绍3.4.2 multimap的使用3.5 map和set在OJ中的…...

学习Python可以做什么工作?

一: 1、web开发:Python拥有非常完善与web服务器交互的库,大量的免费网页模板,相对于更具有优势,同时还具有非常优秀的Django框架,功能齐全。目前国内的豆瓣网、果壳网等,国外的Google、YouTube等…...

AWS攻略——Peering连接VPC

文章目录创建IP/CIDR不覆盖的VPC创建VPC创建子网创建密钥对创建EC2创建Peering接受Peering邀请修改各个VPC的路由表修改美东us-east-1 pulic subnet的路由修改悉尼ap-southeast-2路由测试知识点我们回顾下《AWS攻略——VPC初识》中的知识: 一个VPC只能设置在一个Re…...

程序员遇到人生低谷期怎么做?

每个人的一生都是起起伏伏的,你不会天天高潮,总会经历一段又一段的不如意,你怎么把握这一段段时间,如何掌控人生节奏,都源于对人生低谷期的回答。 尤其是2022年,程序员受到的冲击并不小,从年初…...

理解IM消息“可靠性”和“一致性”问题,以及解决方案探讨

试想如果一个IM连发出的消息都不知道对方到底能不能收到、发出的聊天内容对方看到的到底是不是“胡言乱语”(严重乱序问题),这样的APP用户肯定不会让他在手机上过夜(肯定第一时间卸载了),因为最基本的聊天逻…...

2021-08-29

服务器 主:172.17.0.2 master 备:172.17.0.3 slave1 lvs虚拟IP:172.17.0.100 #nginx下载地址 http://nginx.org/download/ 本地文件路径 1.dockerfile构建nginx FROM centos:7 ADD nginx-1.6.0.tar.gz /usr/local COPY nginx_install.sh /usr/local RUN sh …...

第八题、哈夫曼编码大全

题目: 哈夫曼编码大全 描述: 关于哈夫曼树的建立,编码,解码。 输入 第一行输入数字N,代表总共有多少个字符以及权值 第二第三行分别是一行字符串,以及每个字符对应的权值 接下来输入一个数M,表…...

linux集群技术(二)--keepalived(高可用集群)(二)

案例1--keepalived案例2--keepalived Lvs集群1.案例1--keepalived 1.1 环境 初识keepalived,实现web服务器的高可用集群。 Server1: 192.168.26.144 Server2: 192.168.26.169 VIP: 192.168.26.190 1.2 server1 创建etc下的…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...