Linux环境下动态链接库的生成和使用
使用自己封装的so时遇到了点问题,本着简便原则决定写个demo看看,顺便记录下整个过程。
1)生成so所需的文件如下:
print.h
#ifndef __print_h__
#define __print_h__ void print(void); #endif
print.cpp
#include <stdio.h>
#include "print.h" void print(void)
{
printf("hello world.\n");
}
bye.h
#ifndef __bye_h__
#define __bye_h__ void bye(void); #endif
bye.cpp
#include <stdio.h>
#include "bye.h" void bye(void)
{
printf("bye bye.\n");
}
midd.h
#ifndef __midd_h__
#define __midd_h__ class Middleware{
public:
Middleware();
~Middleware(); bool data(const char *p);
};
#endif
midd.cpp
#include "print.h"
#include "bye.h"
#include "midd.h"
#include <stdio.h> Middleware::Middleware()
{
printf("Middleware::Middleware()\n");
} Middleware::~Middleware()
{
printf("Middleware::~Middleware()\n");
} bool Middleware::data(const char *p)
{
print();
bye(); return true;
}
2)编译过程
g++ -c -fPIC -shared bye.cpp
g++ -c -fPIC -shared print.cpp
g++ -c -fPIC -shared midd.cpp
3)链接过程
g++ -o test.so midd.o print.o bye.o -fPIC -shared
4)动态链接库的使用
现在写一个main.cpp来调用so,看看效果
main.cpp
#include "midd.h"
int main()
{
Middleware middleware;
middleware.data("xxx"); return 0;
}
生成可执行文件:
g++ -o test main.cpp ./test.so
测试:
./test
Middleware::Middleware()
hello world.
bye bye.
Middleware::~Middleware()
Linux环境下动态链接库的生成和使用的更多相关文章
- 在linux环境下使用itext生成pdf
转载请注明出处 https://www.cnblogs.com/majianming/p/9537173.html 项目中需要对订单生成pdf文件,在不断的尝试之后,终于生成了比较满意的pdf文档. ...
- 【ARM-Linux开发】Linux环境下使用eclipse开发C++动态链接库程序
Linux环境下使用eclipse开发C++动态链接库程序 Linux中也有类似windows中DLL的变成方法,只不过名称不同而已.在Linux中,动态链接叫做Standard Object,生成的 ...
- Linux环境下如何生成core文件
Linux环境下进程发生异常而挂掉,通常很难查找原因,但是一般Linux内核给我们提供的核心文件,记录了进程在崩溃时候的信息.但是生成core文件需要设置开关,具体步骤如下: 1.查看生成core文件 ...
- 快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)
快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)(转载) 问题描述 与windows环境下不同,linux选择debug构建时并不 ...
- linux 环境下运行STS时 出现must be available in order to run STS
linux 环境下运行ECLIPSE时 出现 “ A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avai ...
- Linux环境下段错误的产生原因及调试方法小结(转)
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...
- 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解
一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...
- Linux环境下段错误的产生原因及调试方法小结
转载自http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...
- linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)
linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...
随机推荐
- linux命令详解2-文件管理,查看文件命令
1. cat命令(tac) ----连接文件,并打印出来(顺序打印)与tac命令类似只不过,tac命令是逆序打印 [语法] cat [OPTION]... [FILE]... [选项] -A:显示所有 ...
- MD5类库(hex_md5)
/* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as ...
- JSP的原理、JSP的执行过程
Jsp的本质是servlet, 通过response的printWriter返回,response的getOutputStream只能调用一次,返回流就不能返回页面刷新. JSP起源 在很多动态网页中 ...
- book pile SGU - 271
有n本书从上到下摞在一起,有两种操作.ADD(C)表示把一本新书C放到这一摞书的最顶上,ROTATE表示将前K本书进行反转.在一系列操作后输出最后书的顺序 分析: 当时听别人讲这个题的时候很懵逼,后来 ...
- Opencv normalize
#include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; ...
- Linux Virtualization with Xen
Xen is the new virtualization kid on the block. It's gaining visibility and importance at a speed on ...
- Redhat Cluster Suite原理介绍
RedHat Cluster Suite简称RHCS,是一个能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合,基于RHCS可以搭建高可用性集群.负载均衡集群.存储集群和高性能 ...
- p2093 [国家集训队]JZPFAR
传送门 分析 首先给大家推荐一个非常好的KDTree笔记 here 此题就是y9ong优先队列维护距离最远的k个,最后输出队首元素即可 估价函数就是max和min两点到 询问点的最远距离 代码 #in ...
- Java 程序员最喜欢的 11 款免费 IDE 编辑器
Java开发人员需要花费大量的时间埋头于Java代码中,使用各种不同的IDE(Intergrated Development Environment)来开发Java代码,所以下面我将为大家介绍11个不 ...
- No member named 'setResizeMode' in 'QHeaderView' - Convert Qt 4.7 to Qt 5.8
https://stackoverflow.com/questions/42743141/no-member-named-setresizemode-in-qheaderview-convert-qt ...