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

Ubuntu将c++编译成.so文件并测试

一、准备cpp和h文件

  • 创建test.cpp

cpp中定义相加的函数funcAdd,给出函数的细节代码

#include <iostream>
using namespace std;int funcAdd(int x, int y)
{return x+y;
}
  • 创建test.h

h中声明定义的函数,不需要任何细节

#ifndef __TEST__
#define __TEST__
using namespace std;int funcAdd(int x, int y);#endif

二、生成.so文件

  • 生成.so文件

将test.cpp和test.h放在同一目录下,在该目录打开终端,运行以下代码

g++ -fpic -shared -o libtest.so test.cpp

此时会生成libtest.so文件,包括了test中的所有函数,已经自动读取了头文件。

  • 将.so文件复制到路径/usr/lib
sudo cp libtest.so /usr/lib
// 删除文件
// sudo rm -rf /usr/lib/libtest.so

三、生成测试文件并运行

  • 创建测试文件main.cpp
#include "test.h"
#include <iostream>
using namespace std;int main() {cout<<funcAdd(2,3);return 0;
}
  • 编译main.cpp并链接.so生成可执行文件main
g++ -o main main.cpp -L. -ltest

这一步生成了可执行文件main,其中main.cpp代码中调用了.so文件中的函数

  • 运行可执行文件main
./main

在这里插入图片描述

参考链接

https://blog.csdn.net/mu_xing_/article/details/116978567

相关文章:

Ubuntu将c++编译成.so文件并测试

一、准备cpp和h文件 创建test.cpp 在cpp中定义相加的函数funcAdd&#xff0c;给出函数的细节代码 #include <iostream> using namespace std;int funcAdd(int x, int y) {return xy; }创建test.h 在h中声明定义的函数&#xff0c;不需要任何细节 #ifndef __TEST__ #…...

数据分析-Pandas数据的探查面积图

数据分析-Pandas数据的探查面积图 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&…...

美团分布式 ID 框架 Leaf 介绍和使用

一、Leaf 在当今日益数字化的世界里&#xff0c;软件系统的开发已经成为了几乎所有行业的核心。然而&#xff0c;随着应用程序的规模不断扩大&#xff0c;以及对性能和可扩展性的需求不断增加&#xff0c;传统的软件架构和设计模式也在不断地面临挑战。其中一个主要挑战就是如…...

Ubuntu20.04: UE4.27 中 Source Code 的编辑器下拉框没有 Rider选项

问题描述 最近想用 Rider 作为 UE4 开发的 IDE&#xff0c;但安装好 Rider 后&#xff0c;发现编辑器下拉框中没有 Rider 的选项&#xff0c;我检查了 UE4 的插件&#xff0c;发现 Rider Integration 插件已经安装且启用的。 环境&#xff1a;Ubuntu 20.04 UE4.27 Rider2023…...

【论文阅读-PRIVGUARD】Day4:3节

3 PRIVANALYZER&#xff1a;强制执行隐私政策的静态分析 本节介绍PRIVANALYZER&#xff0c;这是一个用于强制执行由PRIVGUARD追踪的隐私政策的静态分析器**。我们首先回顾LEGALEASE政策语言&#xff0c;我们使用它来正式编码政策&#xff0c;然后描述如何静态地强制执行它们**…...

新一代电话机器人开源PHP源代码

使用easyswoole 框架开发的 新一代电话机器人开源PHP源码 项目地址&#xff1a;https://gitee.com/ddrjcode/robotphp 代理商页面演示地址 http://119.23.229.15:8080 用户名&#xff1a;c0508 密码&#xff1a;123456 包含 AI外呼管理&#xff0c;话术管理&#xff0c;CR…...

dockerdocker-copose_限制容器cpu和内存

本文目录 docker的限制方式限制CPU占用限制内存占用 docker-compose docker的限制方式 限制CPU占用 Docker使用--cpus参数来限制容器的CPU资源。该参数指定了分配给容器的CPU核心数量或百分比。 例子&#xff1a;限制CPU使用个数 docker run --cpus2 <imageName>以上…...

【leetcode】圆圈中最后剩下的数字

目录 1. 问题 2. 思路 3. 代码 4. 运行 1. 问题 本题即为典型的约瑟夫问题&#xff0c;通过递推公式倒推出问题的解。原始问题是从n个人中每隔m个数踢出一个人&#xff0c;原始问题变成从n-1个人中每隔m个数踢出一个人…… 示例 1&#xff1a; 输入: n 5, m 3 输出: 3…...

利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表

第一步&#xff1a;.shp批量转.geojson # author: JMY # 创建时间: 2024/2/26 17:12 # 批量将.shp文件生成geojson文件并转换坐标为3857import os import geopandas as gpd# 定义输入和输出文件夹路径 input_folder shp文件 output_folder geojson文件# 定义输入和输出坐标系…...

远程服务器Ubuntu 18.04安装VNC远程桌面

一、安装vnc 1.安装图形化界面工具 # 安装过程中会弹窗让选择配置&#xff0c;选lightdm sudo apt install ubuntu-desktop sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal 2.安装vnc sudo apt-get install x11vnc3.安装LightD…...

30天自制操作系统(第23天)

23.1 编写malloc 参考第22天的内容&#xff0c;在绘制窗口前先分配了150*50个字节大小的内存&#xff0c;所以导致该文件经编译后有7.6k左右&#xff0c;能否在其中使用指针呢&#xff1f;当需要开辟空间时&#xff0c;移动指针即可。在之前的章节中也有函数memman_alloc函数可…...

基于Rust语言,和WebAssembly技术,与JavaScript结合,的具体应用场景

基于Rust语言与WebAssembly&#xff08;Wasm&#xff09;技术并与JavaScript结合&#xff0c;可以应用于多个场景&#xff0c;特别是在需要高性能和/或低级系统访问的情况下。下面是一些具体的应用场景&#xff1a; 性能密集型任务: Rust加上Wasm适合执行计算密集型任务&#x…...

【MATLAB源码-第154期】基于matlab的OFDM系统多径信道下块状和梳妆两种导频插入方式误码率对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;Orthogonal Frequency Division Multiplexing&#xff0c;正交频分复用&#xff09;是一种高效的无线信号传输技术&#xff0c;广泛应用于现代通信系统&#xff0c;如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…...

Linux 下 socket 编程介绍及 TCP 客户端与服务端创建示例

目录 socket 编程接口TCP 服务端TCP 客户端更多内容 本文介绍了 Linux 下的 socket 编程&#xff0c;及总结了使用 socket 接口实现 TCP 服务端和客户端的示例代码。 socket 编程接口 socket() 函数&#xff1a;用于创建一个新的 socket 描述符&#xff1a; int socket(int …...

JetBrains Gateway Github Copilot 客户端插件和主机插件

JetBrains Gateway可以通过插件支持Github Copilot&#xff08;需另行注册&#xff09;。 需要安装插件 客户端&#xff0c;而非插件 主机&#xff0c;如图所示&#xff1a; 大概是因为代码显示在客户端&#xff08;运行在本地的IDE&#xff09;&#xff1f;...

【web APIs】3、(学习笔记)有案例!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、概念其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 二、案例举例电梯导航 前言 掌握阻止事件冒泡的方法理解事件委托的实现原理 一、概念…...

使用css reset 还是使用Normalize.css

文章目录 使用css reset 还是使用Normalize.cssCSS Reset:Normalize.css:总结Normalize.css 的使用&#xff08;例如Vue 3.0 和 Vue CLI 4.x 项目&#xff09;1.安装2.main.js 中导入3.测试引用是否成功。 使用css reset 还是使用Normalize.css 使用 CSS Reset 还是 Normalize…...

英语中的提问方式(问法)(bug提问、bug描述)

文章目录 英语提问方式一、单词、短语、句子的意思1.1 提问单词的意思1.2 提问短语的意思1.3 提问句子的意思 二、在编程中提问2.1 提问bug2.2 请求代码帮助 如何提出反问句1. 构建反问句的基本结构2. 提问反问句的方法3. 理解反问句的意图 在口语中提问&#xff1a;确保清晰度…...

xss.haozi.me靶机练习

目录 第零关&#xff1a; 第一关&#xff1a; 第二关&#xff1a; 第三关&#xff1a; 第四关&#xff1a; 第五关&#xff1a; 第六关&#xff1a; 第七关&#xff1a; 第八关&#xff1a; 第九关&#xff1a; 第十关&#xff1a; 第十一关&#xff1a; 第十二关…...

2.1 mov、add和sub加减指令实操体验

汇编语言 1. mov操作 1.1 mov移动值 mov指令把右边的值移动到左边 mount c d:masm c: debug r ax 0034 r 073f:0100 mov ax,7t1.2 mov移动寄存器的值 把右边寄存器的值赋值给左边的寄存器 a 073f:0105 mov bx,axt1.3 mov高八位&#xff08;high&#xff09;和低八位&am…...

MiniCPM-V 4.5本地部署指南:从环境配置到图片视频推理全流程(附常见错误排查)

MiniCPM-V 4.5本地部署实战&#xff1a;从零搭建到多模态推理全攻略 在人工智能技术日新月异的今天&#xff0c;能够处理图片、视频等多模态数据的模型正变得越来越重要。MiniCPM-V 4.5作为一款轻量级但功能强大的多模态大语言模型&#xff0c;凭借其仅80亿参数却能达到超越GPT…...

CSS Grid布局如何实现网格项目排序_使用order属性改变显示顺序

order属性仅改变视觉顺序&#xff0c;不影响DOM、Tab键序、屏幕阅读器读取及SEO&#xff1b;其排序按负数>0>正数组分组&#xff0c;组内依HTML顺序&#xff1b;仅对网格直接子元素生效&#xff0c;需避免嵌套布局干扰和响应式重排抖动。order属性只影响视觉顺序&#xf…...

从文本到声音:用Python+MMS-TTS为藏语教学视频快速生成配音(附批量处理脚本)

藏语教学视频配音自动化&#xff1a;Python与MMS-TTS的高效实践指南 在数字化教育快速发展的今天&#xff0c;藏语教学视频的制作面临着独特的挑战——如何高效生成自然流畅的藏语配音。传统的人工录音方式不仅耗时耗力&#xff0c;还需要专业的语言人才参与。本文将介绍如何利…...

c++ 笔记(一)基础篇

c 基础知识编译与执行流程函数指针指针函数回调函数异常处理函数模板与类模板&#xff08;泛型编程&#xff09;函数模板类模板文件IO强制类型转换const_caststatic_castreinterpert_castdynamic_cast编译与执行流程 c编译过程&#xff1a; 预处理–编译–汇编–链接 预处理阶…...

3个步骤解决老Mac无法升级新系统的困境:OpenCore Legacy Patcher完整指南

3个步骤解决老Mac无法升级新系统的困境&#xff1a;OpenCore Legacy Patcher完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 想象一下&#xff0c;你…...

5步轻松升级:让2008-2017年Intel Mac运行最新macOS的完整指南

5步轻松升级&#xff1a;让2008-2017年Intel Mac运行最新macOS的完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为苹果官方不再支持的老款Mac而…...

软件实施交付转运维学习第五天:用户管理和权限管理

今天是软件实施交付转运维学习的第五天。前面四天我们分别了解了运维的基本概念、Linux常用命令。今天&#xff0c;我们进入一个既基础又极其重要的模块——用户管理和权限管理。无论是操作系统层面&#xff0c;还是应用系统层面&#xff0c;用户和权限都是安全的基石。谁可以访…...

CSL编辑器实战指南:3种学术场景下的高效引用样式管理方案

CSL编辑器实战指南&#xff1a;3种学术场景下的高效引用样式管理方案 【免费下载链接】csl-editor cslEditorLib - A HTML 5 library for searching and editing CSL styles 项目地址: https://gitcode.com/gh_mirrors/csl/csl-editor CSL编辑器是一款基于HTML5的引用样…...

M-7J1R(ROSAHL)大型空间设计电解式除湿器模块,专为电气柜与大型展柜微环境 恒温恒湿方案

在工业电气柜、博物馆大型展柜和通信基站的庞大箱体中&#xff0c;由湿气引发的设备故障或文物损坏&#xff0c;其代价往往是巨大的。像传统除湿的有半导体冷凝式和传统的压缩机式除湿方案&#xff0c;在噪音、振动、冷凝水维护等方面很难达到效果&#xff0c;而 RO SAHL 的 M-…...

用Claude Agent SDK构建CLI工具

我已经向我的团队说了几个月&#xff0c;Claude Code包装器将成为2026年的Cursor。在花了大量时间深入研究Claude Agent SDK后&#xff0c;是的&#xff0c;在像其他人一样仔细研究了泄露的源代码之后&#xff0c;我比以往任何时候都更加确信。转变是真实的&#xff1a;不再是来…...