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

相关文章:

  • 【程序员养生延寿系列-万人关注的养生指南 4 】
  • 电子电气架构——AUTOSAR架构下EcuM唤醒源事件详解
  • Android在后台读取UVC摄像头的帧数据流并推送
  • 齐天大圣的生活
  • 虚拟化介绍
  • 在Pycharm中运行Django项目如何指定运行的端口
  • Java中的图数据库应用:Neo4j入门
  • 【MySQL】MySQL复合查询--多表查询自连接子查询 - 副本
  • 多益网络这种公司你还敢来吗?
  • selenium中webdriver常用的ChromeOptions参数
  • 从键盘输入5个整数,将这些整数插入到一个链表中,并按从小到大次序排列,最后输出这些整数。
  • Golang 并发机制 CSP模型
  • VR转接器:破解虚拟与现实边界的革命性设备
  • 深入理解CSS常见选择器
  • ★【二叉搜索树】【中序遍历+前后指针】Leetcode 530. 二叉搜索树的最小绝对差
  • [译]前端离线指南(上)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Computed property XXX was assigned to but it has no setter
  • Druid 在有赞的实践
  • ECS应用管理最佳实践
  • HomeBrew常规使用教程
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • sublime配置文件
  • 当SetTimeout遇到了字符串
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 解决iview多表头动态更改列元素发生的错误
  • 力扣(LeetCode)357
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端学习笔记之观察者模式
  • 巧用 TypeScript (一)
  • 详解移动APP与web APP的区别
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • #微信小程序(布局、渲染层基础知识)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (多级缓存)缓存同步
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (力扣)1314.矩阵区域和
  • (四)图像的%2线性拉伸
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)Windows2003安全设置/维护
  • (转载)Linux网络编程入门
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 服务 ServiceController
  • .Net 垃圾回收机制原理(二)
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET框架设计—常被忽视的C#设计技巧
  • :=
  • @RunWith注解作用
  • [ C++ ] 继承
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [2544]最短路 (两种算法)(HDU)
  • [Android]常见的数据传递方式