Linux动态库的编译与使用

来源:本站
导读:目前正在解读《Linux动态库的编译与使用》的相关信息,《Linux动态库的编译与使用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《Linux动态库的编译与使用》的详细说明。
简介: Linux动态库的编译与使用

Linux下的动态库以.so为后缀,在Linux下使用动态库一点入门步骤,以便以后能方便使用。

第一步:编写Linux程序库

文件1.动态库接口文件

//动态库接口文件getmaxlen.h

点击(此处)折叠或打开

#ifndef _GETMAXLEN_H_

#define_GETMAXLEN_H_int getMaxLen(int*sel,intN);#endif

文件2.动态库程序实现文件

//动态库程序实现文件getmaxlen.c

点击(此处)折叠或打开

#include"getmaxlen.h"

intgetMaxLen(int*sel,intN){intn1=1,n2=1;for(inti=1;i<N;i++){if(sel[i]>sel[i-1]){n2++;if(n2>n1){n1=n2;}}else{n2=1;}}returnn1;}

第二步:编译生成动态库

gccgetmaxlen.c–fPIC–shared–olibtest.so

由以上命令生成动态库libtest.so,为了不需要动态加载动态库,在命令时需以lib开头以.so为后缀。

–fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

–shared:指明编译成动态库。

第三步:使用动态库

1.编译时使用动态库

文件1.动态库使用文件test.c

//使用动态库libtest.so,该文件名为test.c

点击(此处)折叠或打开

#include"getmaxlen.h"

intmain(){intSel[]={2,3,6,5,3,2,1,2,3,4,5,6,7,6,5};intm;m=getMaxLen(Sel,15);printf("%d",m);return0;}

编译命令:

gcctest.c–L.–ltest–otest

–L:指明动态库所在的目录

-l:指明动态库的名称,该名称是处在头lib和后缀.so中的名称,如上动态库libtest.so的l参数为-ltest。

测试:

lddtest

ldd测试可执行文件所使用的动态库

编译时指定动态库加载路径命令:gcctest.c–L.–ltest-Wl,-rpath,./–otest

提醒:《Linux动态库的编译与使用》最后刷新时间 2024-03-14 01:05:02,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《Linux动态库的编译与使用》该内容的真实性请自行鉴别。