码迷,mamicode.com
首页 > 系统相关 > 详细

Linux环境下动态链接库的生成和使用

时间:2015-07-23 17:37:17      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

使用自己封装的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环境下动态链接库的生成和使用

标签:

原文地址:http://www.cnblogs.com/yangtze736-2013-3-6/p/4670947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!