Linux下C++开发笔记--编译静态链接库和动态链接库

news2025/7/21 10:48:42

目录

1--前言

2--生成静态链接库

3--生成动态链接库


1--前言

承接上一篇Linux下C++开发笔记(g++命令的使用笔记),依据教程记录学习笔记。

2--生成静态链接库

①回顾项目结构:

②汇编,生成swap.o文件

cd src

g++ swap.cpp -c -I../include

注:-c参数的解释可见下图编译过程,../include表示上一级目录中包含.h头文件的路径;

③利用生成的swap.o文件生成静态链接库libswap.a

ar rs libswap.a swap.o

④利用静态链接库文件libswap.a生成可执行文件:

g++ main.cpp -Iinclude -Lsrc -lswap -o staticmain

-Lsrc中的src静态链接库所在的目录-lswap中的swap静态链接库文件libswap.a;staticmain为生成的可执行文件;

运行可执行文件:

./staticmain

3--生成动态链接库

①生成动态链接库文件libswap.so:

g++ swap.cpp -I../include -fPIC -shared -o libswap.so

②利用动态链接库文件libswap.so生成可执行文件:

g++ main.cpp -Iinclude -Lsrc -lswap -o sharemain

注:需要强调的是,当动态链接库和静态链接库处于同一目录下时,会优先调用动态链接库;如上述指令中,src文件夹存在libswap.alibswap.so两个库文件,程序会优先调用libswap.so库文件

③运行可执行文件

LD_LIBRARY_PATH=src ./sharemain

:需指定动态链接库所在路径,如libswap.so文件存在于src文件夹,直接运行会出现以下错误:

 

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

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

相关文章

基于simulink的牛鞭效应模型建模与仿真

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 牛鞭效应,是经济学中的一个术语,它也被称为需求放大效应。牛鞭效应指的是当信息流从最终客户端传输到原始供应商时&…

9.行为建模(Behavioral modeling)

9.1行为模型概述 Verilog行为模型包含控制模拟和操纵先前描述的数据类型变量的过程语句。这些语句包含在程序中。每个过程都有一个与其关联的活动流。活动开始于initial和always语句。每个initial语句和每个always语句都会启动一个单独的活动流。所有活动流都是并发的&…

【机器学习】线性分类【上】广义线性模型

主要参考了B站UP主“shuhuai008”,包含自己的理解。 有任何的书写错误、排版错误、概念错误等,希望大家包含指正。 由于字数限制,分成两篇博客。 【机器学习】线性分类【上】广义线性模型 【机器学习】线性分类【下】经典线性分类算法 1. 线…

C语言实现线索化二叉树(先序、中序、后序)

》》如何用C语言构建一颗二叉树? 第一种方法: ThreadTree A = (ThreadTree)malloc(sizeof(ThreadNode));A->data = { A };A->ltag = 0;A->rtag = 0;A->lchild = NULL;A->rchild = NULL;ThreadTree B = (ThreadTree)malloc(sizeof(ThreadNode));B->data =…

【python自动化】使用关键字驱动实现appium自动化

在写app自动化用例时,尝试用了关键字驱动的框架 记录一下自己对关键字驱动的理解: 1 关键字驱动指将用例步骤的操作封装为关键字,比如定位元素、点击元素、获取元素属性值、断言,这些都是操作关键字 2 在excel中按照用例执行过程&…

Java8方法引用和Lambda表达式实例源码+笔记分享

前言 Java8的lambda表达式,通过lambda表达式可以替代我们之前写的匿名内部类来实现接口。lambda表达式本质是一个匿名函数。 1、lambda表达式本质是一个匿名函数。 1 package com.demo.main;2 3 public class LambdaMain {4 5 public static void main(String[…

环辛炔衍生物DBCO-NH2,amine,Acid,NHS,Maleimide无铜点击反应

DBCO对叠氮化物具有非常高的反应选择性,可用于修饰生物分子,包括肽、蛋白质、酶、活细胞、整个生物体等。在生理温度和pH值范围内,DBCO基团不与胺或羟基反应,DBCO也与叠氮化物基团发生反应DBCO也称为ADIBO(氮杂二苯并环…

2022.11.15-二分图专练

目录 50 years, 50 colors(HDU-1498) Uncle Toms Inherited Land*(HDU-1507) Matrix(HDU-2119) Arbiter(HDU-3118) [ZJOI2007]矩阵游戏(黑暗爆炸1059) Jimmy’s Assignment(HDU-1845) 50 years, 50 colors(HDU-1498) 原题链接:传送门 题意:一个n*n的矩阵中,…

第四章. Pandas进阶—数据格式化

第四章. Pandas进阶 4.1 数据格式化 1.设置小数位数(round函数) DataFrame.round(decimals0,*args,**kwargs)参数说明: decimals:用于设置保留的小数位数 args,kwargs:附加关键字的参数 返回值:返回DataFrame对象 1).示例&#…

HTML常用标签的使用

HTML常用标签的使用 文章目录HTML常用标签的使用1.排版标签1.1 标题标签(h)1.2 段落标签(p)1.3 换行标签(br)1.4 水平线标签(hr)2.文本格式化标签(strong、ins、em、del&…

Vue(七)——Vue中的Ajax

目录 Vue脚手架配置代理 插槽 默认插槽 具名插槽 作用域插槽 Vue脚手架配置代理 本案例需要下载axios库:npm install axios 1.配置类方式(实现WebMvcConfigurer) 2.使用CrossOrigin注解 3.使用nginx反向代理解决跨域 4.Vue中配置代理服务器 代理服务器怎…

懒人的法宝——办公自动化!

没错!办公自动化他来了!果然,代码都是懒人发明出来的。接下来让我们一起来看看这个批改作业的自动化脚本吧!学会了这种思想可以帮助我们高效解决许多重复性的工作,比如说批量修改文件的名称、类型、位置等等&#xff0…

【附源码】计算机毕业设计JAVA计算机系教师教研科研管理系统

项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven Vue 等等组成,B/…

计算机网络-网络层(BGP协议,IP组播,IGMP协议与组播路由选择协议)

文章目录1. BGP协议BGP协议报文格式2. RIP,OSPF,BGP协议对比3. IP组播4. IGMP协议与组播路由选择协议1. BGP协议 与其他自治系统的邻站BGP发言人(BGP边界路由器)交换信息 BGP边界路由器之间交换网络可达性的信息,即要…

C++Qt开发——SMTP协议

1. SMTP协议简介 SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。 SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的…

网络安全之命令执行漏洞复现

0x01 漏洞介绍 漏洞等级:严重 Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。在版本1.997之前的Webmin中存在一个任意命令注入漏洞,触发该漏洞需登录Webmin。 0x02 漏洞影响范围 …

GitHub最新发布 阿里十年架构师手写版spring全家桶笔记全新开源

嗨咯,大家好! 没错,又是我,还跟前面一样,有好东西我才会出现。那是什么好东西呢?今天啊,给他分享阿里在Github最新发布的spring全家桶笔记第九版,这份笔记一共分三份:sp…

自学前端开发 - VUE 框架 (二):渲染、事件处理、表单输入绑定、生命周期、侦听器、组件基础

[TOC](自学前端开发 - VUE 框架 (二) 事件处理、表单输入绑定、生命周期、侦听器、组件基础) 事件处理 可以使用 v-on 指令 (简写为 ) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript。用法:v-on:click"methodName" 或 click"ha…

音视频进阶知识

亮度方程 亮度方程给出彩色光的亮度Y与三基色(R、G、B)的关系式Y1.0000R4.5907G0.06015B 在不同的彩色电视制式中,由于所选的标准白光和显像三基色不同,导致亮度方程也互有差异。 以C光为标准白光源的NTSC制彩色电视制式的亮度方程…

[java/初学者/GUI编程]GUI界面设计——界面组件类

前言 GUI,即图形用户界面,其英文全称是Graphics User Interface。 它是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于命令提示符的操作系统,GUI编程就是编出一个图形用户界面的软件,它使用图形的方式,以菜…