当前位置: 首页 > 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

http://www.lryc.cn/news/309881.html

相关文章:

  • 数据分析-Pandas数据的探查面积图
  • 美团分布式 ID 框架 Leaf 介绍和使用
  • Ubuntu20.04: UE4.27 中 Source Code 的编辑器下拉框没有 Rider选项
  • 【论文阅读-PRIVGUARD】Day4:3节
  • 新一代电话机器人开源PHP源代码
  • dockerdocker-copose_限制容器cpu和内存
  • 【leetcode】圆圈中最后剩下的数字
  • 利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表
  • 远程服务器Ubuntu 18.04安装VNC远程桌面
  • 30天自制操作系统(第23天)
  • 基于Rust语言,和WebAssembly技术,与JavaScript结合,的具体应用场景
  • 【MATLAB源码-第154期】基于matlab的OFDM系统多径信道下块状和梳妆两种导频插入方式误码率对比仿真。
  • Linux 下 socket 编程介绍及 TCP 客户端与服务端创建示例
  • JetBrains Gateway Github Copilot 客户端插件和主机插件
  • 【web APIs】3、(学习笔记)有案例!
  • 使用css reset 还是使用Normalize.css
  • 英语中的提问方式(问法)(bug提问、bug描述)
  • xss.haozi.me靶机练习
  • 2.1 mov、add和sub加减指令实操体验
  • 计算机设计大赛 深度学习机器视觉车道线识别与检测 -自动驾驶
  • 中间件安全(概述)有中间件的各类链接和官网信息和漏洞库以及配置问题和开源工具
  • Unity铰链四杆机构设计和运动仿真
  • Python爬虫——解析常用三大方式之Xpath
  • C#判断DataTable1 A列的集合是否为DataTable2 B列的集合的子集
  • VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”
  • 基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】
  • vscode如何远程到linux python venv虚拟环境开发?(python虚拟环境、vscode远程开发、vscode远程连接)
  • 蓝桥杯第十二届电子类单片机组程序设计
  • 基于springboot+vue的工作流程管理系统
  • 【LeetCode刷题】146. LRU 缓存