linux跨平台开发库(linux系统下制作动态连接库并使用)

 2024-09-22  阅读 312  评论 0

摘要:前言:本实验制作一个动态链接库并使用,需要知道的是在linux系统下动态链接库的后缀名是.so ,window系统中的动态链接库后缀名为.dll1、本次实现的代码结构如下:demo.c :实现库函数将两个整数相加demo.h:函数原型放在.h文件里提供给第三方调用main.c 模拟第三方用户,调用静

前言:本实验制作一个动态链接库并使用,需要知道的是在linux系统下动态链接库的后缀名是.so ,window系统中的动态链接库后缀名为.dll

1、本次实现的代码结构如下:

demo.c :实现库函数将两个整数相加

demo.h:函数原型放在.h文件里提供给第三方调用

main.c 模拟第三方用户,调用静态库

linux跨平台开发库(linux系统下制作动态连接库并使用)(1)

2、将demo.c制作成动态库.so

demo.c以及demo.h内容如下:

// demo.c #include <stdio.h> /* 自己实现的两个整数相加的函数,以静态库的形式提供, 调用者无需关注具体怎么实现,只知道调用的函数名, 以及参数 */ int my_add(int x,int y) { printf("in demo.c >_<.\r\n"); return x y; }

// demo.h #ifndef __DEMO_H__ #define __DEMO_H__ int my_add(int x,int y); #endif

在ubuntu环境下使用如下命令生成动态库libdemo.so

linux跨平台开发库(linux系统下制作动态连接库并使用)(2)

-fpic是位置无关码,-shared是按照共享库的方式来链接

3、使用动态库库

在main.c里调用动态库的my_add函数,代码如下:

#include <stdio.h> #include "demo.h" int main(void) { int sum = 0; sum = my_add(1,2); printf("sum = %d\r\n",sum); return 0; }

编译以及连接动态库的命令如下:

linux跨平台开发库(linux系统下制作动态连接库并使用)(3)

使用-ldemo就是告诉编译器在libdemo.so里找使用的函数。-L. 是指定连接器在那个目录下寻找库文件,句点.表示当前目录。但是出现运行出错。

由于可执行文件在运行的时候需要查找使用的动态库一般是在/usr/lib目录下,我们只需拷贝libdemo.so到/usr/lib即可。

另外可以通过设置环境变量LD_LIBRARY_PATH,将libdemo.so所在目录添加到环境变量即可

linux跨平台开发库(linux系统下制作动态连接库并使用)(4)

获取相关代码方式

linux跨平台开发库(linux系统下制作动态连接库并使用)(5)

,

版权声明:xxxxxxxxx;

原文链接:http://cn.tdroid.net/cedadCz0EBwoNX10.html

发表评论:

管理员

  • 内容265712
  • 积分0
  • 金币0
关于我们
lecms主程序为免费提供使用,使用者不得将本系统应用于任何形式的非法用途,由此产生的一切法律风险,需由使用者自行承担,与本站和开发者无关。一旦使用lecms,表示您即承认您已阅读、理解并同意受此条款的约束,并遵守所有相应法律和法规。
联系方式
电话:
地址:广东省中山市
Email:
注册登录
注册帐号
登录帐号

Copyright © 2022 太卓开发网 Inc. 保留所有权利。 泰达科技网易库网

页面耗时0.1203秒, 内存占用1.33 MB, 访问数据库18次