记录 | linux静态库和动态库的理解

hello.cpp

#include <cstdio>void hello() {printf("Hello, world!\n");
}

main.cpp

#include <cstdio>void hello();int main() {hello();return 0;
}

静态库编译配置:

cmake_minimum_required(VERSION 3.12)
project(hellocmake LANGUAGES CXX)add_library(hellolib STATIC hello.cpp)
add_executable(a.out main.cpp)
target_link_libraries(a.out PUBLIC hellolib)

动态库编译配置:

cmake_minimum_required(VERSION 3.12)
project(hellocmake LANGUAGES CXX)add_library(hellolib SHARED hello.cpp)
add_executable(a.out main.cpp)
target_link_libraries(a.out PUBLIC hellolib)

编译:

cmake -B buildcd build 
make

在这里插入图片描述
反汇编:

objdump -d a.out | less

在这里插入图片描述
可以看到静态库编译是把实现写在了可执行程序里面了,而动态库编译是跳转到了动态库,所以执行的时候,如果是静态库编译,则可以抛开.a;而动态库编译的话,就必须要链接动态库。

所以也是为什么静态库编译的执行程序会比动态库编译的要大的原因了

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

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

相关文章

mysql面试题——索引创建与设计原则

一&#xff1a;哪些情况适合创建索引&#xff1f; 字段的数值有唯一性的限制 频繁作为 WHERE 查询条件的字段 经常 GROUP BY 和 ORDER BY 的列 DISTINCT 字段需要创建索引&#xff1a;有时候我们需要对某个字段进行去重 SELECT DISTINCT(student_id) FROM student_info;运行…

王学岗切面编程(AOP)最新配置

不懂啥是切面编程的看我这篇文章 本文主要讲解最新的切面编程配置 首先看下app的build.gradle界面&#xff0c;有两处配置 plugins {id("com.android.application")id("org.jetbrains.kotlin.android") // 配置1id("com.ibotta.gradle.aop")…

C++大小写字母转换

这内容确实很初级了&#xff0c;就是ascii码的加减转换类型输出&#xff0c;但是以往都是学学理论&#xff0c;好多东西还真掌握不扎实&#xff0c;现在通过实验了验证一下&#xff0c;代码如下 可以看到字母的大小写直接差了32&#xff0c;如果要进行转换的话对应加减就可以了…

C++ 获取当前目录下的指定后缀文件

获取指定目录下的所有指定格式文件&#xff0c;返回的列表将按照创建时间排序 注意&#xff1a;文件最早的在最前面 #include "shlwapi.h" #pragma comment(lib,"shlwapi.lib") #pragma comment(lib, "Version.lib ") #include <iostream&…

Redis Reactor事件驱动模型源码

前置学习&#xff1a;Redis server启动源码-CSDN博客 1、Redis服务器启动的时候就会就一直在轮询。 // 运行事件处理器&#xff0c;一直到服务器关闭为止 aeSetBeforeSleepProc(server.el,beforeSleep); aeMain(server.el);// 服务器关闭&#xff0c;停止事件循环 aeDeleteEven…

Hello World

世界上最著名的程序 from fastapi import FastAPIapp FastAPI()app.get("/") async def root():return {"message": "Hello World"}app.get("/hello/{name}") async def say_hello(name: str):return {"message": f"…

智慧配电运维系统解决方案

智慧配电运维系统依托电易云-智慧电力物联网&#xff0c;是一种基于云计算、物联网、大数据等先进技术的配电室运维管理系统&#xff0c;具有实时监测、智能分析、远程控制等特点&#xff0c;可以提高配电室的安全可靠性、运行效率和管理水平。 智慧配电运维系统解决方案通过以…

常见场景题-Redis的bitmap如何实现签到功能?

Redis 的 bitmap 实现签到系统&#xff1f; 答&#xff1a; 主要讲一下 Redis 原生的 bitmap 的使用方法&#xff0c;以及如何使用 bitmap 来实现签到功能 先来看一下如何使用 redis bitmap 的原生命令实现签到功能&#xff1a; 签到 我们先来设计 key&#xff1a;userid:y…

一文通关物理机Ubuntu22.04融合部署OpenStack

前言 因为博主笔记本是amd的&#xff0c;就最近搞了个小主机&#xff0c;就想装个云平台玩玩&#xff0c;搞了三四天才正儿八经弄完&#xff0c;摸了一大堆错误出来&#xff0c;在文章前面我会将这些需要注意的点列举出来。 环境 物理环境&#xff1a; i5 12450H 32G内存 无线…

css 3D背景反转实现

body{/* 透视 */perspective: 800px; } div{transform-style:preserve-3d;width:259px;height:396px;margin: 100px auto;position: relative; } div img{position: absolute;width:259px;height:396px;left:0;top:0;transition: all linear 2s;z-index: 0; } div img:nth-chil…

Centos7安装GItLab(在线版)

基础环境准备 1.配置清华大学镜像仓库 新建仓库配置文件使用 vim /etc/yum.repos.d/gitlab-ce.repo 命令&#xff0c;输入以下内容,保存 [gitlab-ce] nameGitlab CE Repository baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck0 enabl…

ThreadLocal+TaskDecorator实现父子线程 参数传递

一、背景 我定义注解&#xff0c;在切面中实现动态数据源切换&#xff0c;但是目标方法中&#xff0c;使用新开线程&#xff0c;异步的方式执行&#xff0c;导致在切面中主线程切换数据源参数&#xff0c;无法在异步的目标方法中使用。 二、实现方式 1、创建UserUtils类。 …

免费文章生成器的种类,3款免费的文章生成器推荐

内容创作无疑是网络营销和品牌建设中不可或缺的一环。许多人在日常工作中可能会面临时间不足、灵感枯竭等问题&#xff0c;本文将深入聊聊免费文章生成器的种类&#xff0c;详细介绍使用方法。 1. 免费文章生成器的种类 基于模板的生成器 这类生成器通常提供一系列文章模板&…

清新脱俗的Notes主页

大家好&#xff0c;才是真的好。 作为Notes客户端重度用户&#xff0c;我个人非常喜欢Notes客户机&#xff0c;平时都在使用。对于另一些Notes用户&#xff0c;喜欢Notes的人非常喜欢&#xff0c;而且还知道它非常强大&#xff0c;可以进行很多定制化。 今天我们来讲的就是No…

PHP:解决一个字符串中的斜杠 / 进行 JSON 编码时,斜杠被转义为 \/

一、修改前 问题代码 直接通过JSON编码&#xff0c;就会出现问题 代码 $url SO/.$fileName; echo json_encode($url); 效果 二、解决后 代码 使用 json_encode 函数的第二个参数 JSON_UNESCAPED_SLASHES 来禁止对斜杠进行转义 $url SO/.$fileName; echo json_encode…

C#调用cmd.exe(dos命令)两种方法(Process,Cli)

1、通过Process调用cmd命令 1&#xff09;C&#xff03;运行shell命令 string strCmdText; strCmdText "/C copy /b Image1.jpg Archive.rar Image2.jpg"; System.Diagnostics.Process.Start("CMD.exe",strCmdText); 2&#xff09;运行cmd命令隐藏控制…

html实现好看的个人博客留言板源码

文章目录 1.设计来源1.1 博客主界面1.2 常用源码1.3 我的文章1.4 留言板1.5 联系我 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134837482 html实现好看的个人博客留言…

【征稿倒计时十天,ACM独立出版,有确定的ISBN号,ei检索稳且快】

2023 人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff09; 2023 International Conference on Artificial Intelligence, Systems and Network Security 由西南科技大学计算机科学与技术学院主办的2023人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff0…

BearPi Std 板从入门到放弃 - 引气入体篇(9)(DAC->ADC)

简介 结合 BearPi Std 板从入门到放弃 - 引气入体篇&#xff08;7&#xff09;(DAC) 和 BearPi Std 板从入门到放弃 - 引气入体篇&#xff08;8&#xff09;(ADC) 这两篇&#xff0c; 实现 D -> A -> D 的转换, 也就是DAC -> ADC; 开发板 &#xff1a; Bearpi Std(小…

智能DNS与CDN:增强网络性能和用户体验

文章目录 智能DNS与CDN&#xff1a;增强网络性能和用户体验1. 智能DNS1.1 智能DNS简介1.2 智能DNS的工作原理1.3 智能DNS的优点 2. 内容分发网络&#xff08;CDN&#xff09;2.1 CDN简介2.2 CDN的工作原理2.3 CDN的优点 3. 智能DNS与CDN的结合4. 总结 智能DNS与CDN&#xff1a;…