linux跨平台开发库(linux系统下制作动态连接库并使用)
前言:本实验制作一个动态链接库并使用,需要知道的是在linux系统下动态链接库的后缀名是.so ,window系统中的动态链接库后缀名为.dll
1、本次实现的代码结构如下:demo.c :实现库函数将两个整数相加
demo.h:函数原型放在.h文件里提供给第三方调用
main.c 模拟第三方用户,调用静态库
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
-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;
}
编译以及连接动态库的命令如下:
使用-ldemo就是告诉编译器在libdemo.so里找使用的函数。-L. 是指定连接器在那个目录下寻找库文件,句点.表示当前目录。但是出现运行出错。
由于可执行文件在运行的时候需要查找使用的动态库一般是在/usr/lib目录下,我们只需拷贝libdemo.so到/usr/lib即可。
另外可以通过设置环境变量LD_LIBRARY_PATH,将libdemo.so所在目录添加到环境变量即可
获取相关代码方式
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com