首页 > 编程知识 正文

so库官网请不要用,和so库一起用的搜索软件

时间:2023-05-05 06:58:16 阅读:48479 作者:259

另一方面,共享库的概念首先在windows下,共享库的扩展名使用dll; 那么,在linux下也存在共享库的概念。 也就是说,是so文件。 《1》 示意图

《2》 so文件说明

《1》 so源文件中没有main ()。 即使有也不会执行。

当编译《2》时,gcc -fPIC可以产生与位置无关的代码;

《3》链接时,gcc -shared指示生成共享库文件

《4》共享库文件名以lib开头,文件扩展名为. so

eg:libtest.so http://www.Sina.com /

1、用户在linux上找到so文件的位置有两种方法;

(1)必须将相关路径添加到. bash_profile中。

导出LD _ library _ path=$ LD _ library _ path :

如下所示。

注意:添加成功后,进入下行模式,保存退出。 必须重新运行才能启用。

. bash_profile

《2》 so文件的使用方法

)2)或将so文件直接加载到/user/lib/中; 但是,我不推荐这种方式。 /user/lib/是一个linux系统库,所以如果您将自己定义的so文件放在这里,它就像在windows上自己编写一个小APP应用程序,然后自己将它放在c驱动器上一样,不太合适

2、在. c中使用so文件,必须首先声明相关头文件

3、gcc链接时,使用-L和-L文件名;

例如,gcc -L -ltest -o a a.c

-L表示在当前目录下查找. so文件,

-ltest链接到名为libtest.so的库文件,

a表示编译后的可执行文件名称,a;

二、实例说明如下所示:

intmax(inta,int b ) /双数比较大小函数(if ) ab ) return a; else return b; (int bdd ) inta,int b ) /实现两个数的加法函数) returnab; } $ vim so.c

$vim makefile

编译so文件:

1 # ifndef so _ h _3# defineso _ h45 intmax (inta,int b ); 6intadd(inta,int b ); 79 # endif/* so _ h _ */http://www.Sina.com/http://www.Sina.com /

1 # include stdio.H2 # include stdlib.H3 # include ' so.h ' 45 int main (intarg,char *args[] ()6)7printf ) max=% 10返回0; 11 )//保存结束,返回so的头文件$ vim so.h

1.suffixes 3360.c.o2cc=gcc3srcs=a.c 45 objs=$ (srcs 3360.c=.o )6exec=a78all:$(objs )9$ (cc )-)

第二次测试:

1 # include stdio.H2 # include stdlib.H3 # include ' so.h ' 45 int main (intarg,char *args[] ()6)7printf ) max=% 应返回//421011 printf (添加=% dn,添加) 40,50 ) )。 返回901213printf(add=%dn,add ) 45,55 ) )。 100 14返回返回0; 15 )测试结果:

可见我们得到的结果正如预想的那样,共享着成功;

三、特别说明在当前用户下创建的共享库so只能由当前用户使用,其他用户不能使用;

实践是检验真理的唯一标准:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。