首页IT科技linux静态库调用静态库(Linux下的静态库和动态库 yg2362 C++博客)

linux静态库调用静态库(Linux下的静态库和动态库 yg2362 C++博客)

时间2025-09-19 12:11:04分类IT科技浏览7005
导读:1....

1.制作自己的动态库和静态库

linux下动态库以.so结尾                ,静态库以.a结尾                         ,它们都以lib开头        ,比如一个库名为net,那么它的全名应该是libnet.so或者libnet.a                 。

我们有两个文件                ,hello.ctest.c                         ,下面是两个文件的内容

//hello.c

#include <stdio.h>

void my_lib_func()

{

printf("Library routine called\r\n");

}

//test.c

#include <stdio.h>

int main()

{

my_lib_func();

return 1;

}

test.c调用了hello.c的方法        ,我们把hello.c封装成库文件                        。无论是静态库还是动态库        ,都是由.o文件组成                         ,我们先把gcc -c hello.c生成.o文件

制作静态库

ar crv libmyhello.a hello.o                 ,ar是生成静态库的命令        ,libmyhello.a是我的静态库名        。下一步就是在我的程序中使用静态库

可以看到已经有了Library routine called的结果                        ,说明调用成功了         。

下面我们删除libmyhello.a,看看程序是否还是运行正常

我们发现程序依然运行正常                 ,说明静态库已经连接进入我们的程序中

制作动态库

我们看见动态库libmyhello.so已经生成,下面继续使用

找不到库文件                        ,这个时候我们把so文件拷贝到/usr/lib下面

运行成功

2.动态库和静态库同时存在的调用规则

我们可以发现                         ,不论是动态库还是静态库,程序编译连接的时候都是加的参数-l                ,那么当他们同时存在的时候                         ,程序会选择动态库还是静态库呢                        。我们做个尝试                。

我们同时存在libmyhello.alibmyhello.so        ,我们发现运行的时候                ,出现找不到动态库的错误                         ,由此        ,我们可以得出结论        ,同时存在动态库和静态库的时候                         ,gcc会优先选择动态库

声明:本站所有文章                 ,如无特殊说明或标注        ,均为本站原创发布         。任何个人或组织                        ,在未征得本站同意时                 ,禁止复制                 、盗用                        、采集        、发布本站内容到任何网站         、书籍等各类媒体平台                         。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理                。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
mpi+openmp(OpenMP,MPI,MapReduce 比较) 网站如何收录(怎么做网站收录)