linux中动态链接库用扩展名,Linux下动态链接库的创建和使用浅谈.pdf

本文详细介绍了Linux环境下动态链接库的创建过程,包括编写API头文件、实现动态库功能及编译生成动态库。同时,讨论了如何使用C程序调用C编写的动态库以及C程序调用C++编写的动态库,强调了C++函数在C语言中调用时需要extern "C"进行名称修饰的问题。
摘要由CSDN通过智能技术生成

您所在位置:网站首页 > 海量文档

&nbsp>&nbsp计算机&nbsp>&nbsplinux/Unix相关

a476e75ce57e4882405abe7b4456fc6b.gif

Linux下动态链接库的创建和使用浅谈.pdf6页

本文档一共被下载:2377011b61454b208b34ad77b4c31088.gif次,您可全文免费在线阅读后下载本文档。

072ad097814a33d1ad18e33ca14a5a9e.png

9ec2792a743ebdf4575ee09a03c275ea.png

7af312d1be2cfc1e59f15880bb7a7e7a.png

5f207613e329ca76dc87c76d3ff77e64.png

adf7aa3071c520b8a2063089f549261c.png

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

2.该文档所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值,立即自动返金币,充值渠道很便利

Linux 下动态链接库的创建和使用浅谈

李兴飞 2011-9-6

一直以来,我对Linux 下的动态链接库的理解比较模糊,由于要在工程中需要使用动态

链接库,所以这几天对这块进行了扫盲。我在学习Linux 环境下的动态使用时,是带着下面

三个问题进行的:

(1) 什么是动态链接库,作用是什么?

(2 ) 使用c 编写动态库,c 程序如何调用动态库?

(3 ) 使用c++编写动态库,c 程序如何调用动态库?

(4 ) 是否可以将c 和c++分别别写的代码一个整合到动态库中?

一、什么是动态链接库?作用是什么?

动态链接库是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的

例程和资源。动态链接库的扩展名是.so。

作用:使用动态链接库可以有效的利用空间和资源,使应用程序可以共享相同功能的代

码模块。

二、使用c 编写动态库,c 程序如何调用动态库?

下面采用例子介绍:

(1)首先编写动态链接库的对外暴露 API 的头文件test_c.h ,我们这里定义的API 是

test_c_api() 函数,代码如下:

>>>>>>>>>>>>>>>>>>>>>>

test_c.h

>>>>>>>>>>>>>>>>>>>>>>

#ifndef __TEST_C_H

#define __TEST_C_H

#include

void test_c_api();

#endif

动态链接库的实现部分,下边是一个打印hello word 的源代码:

>>>>>>>>>>>>>>>>>>>>>>

test_c.c

>>>>>>>>>>>>>>>>>>>>>>

#include "test_c.h"

void test_c_api()

{

printf("test_c hello word!\n");

}

(2 )编译生成动态链接库:gcc –c –fPIC test_c.c 产生test_c.o 目标文件

gcc –shared –o libtest.so test_c.o 生成动态链接库libtest.so

注意:-fPIC 选项的意思是产生于本地无关的代码

-shared 选项生产动态链接库

也可以直接使用gcc –fPIC –shared –o libtest.so test_c.c 生成动态链接库。

(3 )测试动态链接库

测试代码:

>>>>>>>>>>>>>>>>>>>>>>>>

test.c

>>>>>>>>>>>>>>>>>>>>>>>>

#include "test_c.h"// 包含动态链接库的头文件,其中定义了动态链接库暴露的所有API

int main()

{

test_c_api();//c 编写的动态链接库的API

return 0;

}

编译测试文件 gcc –o test test.c –I . –L . –ltest 生成可执行文件test

./test

注意: –I 头文件目录 –L 链接库的目录

使用C 程序调用C 编写的动态库是非常简单的。接下来我们看一下使用C 程序调用C++编写

的动态库。由于编译后的C++和C 函数命名规则的不同,导致C 不能直接调用C++编写的动

态链接库。在调用之前必须进行一些处理 (如:extern "C" )。

三、使用c++编写动态库,c 程序如何调用动态库?

同样使用例子介绍C 程序调用C++编写的动态链接库

(1)首先编写C++动态库的对C 开放API 的头文件test_cpp.h

>>>>>>>>>>>>>>>>>>>>>>>

test_cpp.h

>>>>>>>>>>>>>>>>>>>>>>>

#ifndef __TEST_CPP_H

#define __TEST_CPP_H

#ifdef __cplusplus

extern "C"{

#endif

void test_

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名:

验证码:

c9f2bced460b0329ba0aadbbc3f0fc71.png

匿名?

发表评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值