Linux静态库,linux中静态库和动态库的区别
Linux-yg2362-C博客下的静态库和动态库
Linux 1下的静态库和动态库。制作自己的动态库和静态库。
在linux下,动态库以。静态库以。答:都是以lib开头。例如,如果一个库被命名为net,它的全名应该是libnet.so或libnet.a
我们有两个文件,hello.c和test.c,这是两个文件的内容。
//hello.c
#包含stdio.h
void my_lib_func()
{
printf(调用的库例程 r n );
}
//test.c
#包含stdio.h
int main()
{
my _ lib _ func();
返回1;
}
Test.c调用hello.c的方法,我们将hello.c封装到一个库文件中。静态和动态库都是由。o文件。我们先把gcc -c hello.c生成成。o文件。
制作静态库
Crvlib myhello.ahehello.o,ar是生成静态库的命令,libmyhello.a是我的静态库名。下一步是在我的程序中使用静态库。
您可以看到已经调用了库例程的结果,这表明调用是成功的。
我们先删除libmyhello.a,看看程序是否还在正常运行。
我们发现程序还在正常运行,说明静态库已经接入了我们的程序。
制作动态库
我们看到动态库libmyhello.so已经生成,所以我们将继续使用它。
找不到库文件。此时,我们将so文件复制到/usr/lib。
运行成功。
2.动态库和静态库的调用规则。
我们可以发现,无论是动态库还是静态库,在程序编译连接时都加入了参数-l,那么当两者都存在时,程序会选择动态库还是静态库呢?让我们试一试。
我们同时有libmyhello.a和libmyhello.so,并且在运行时发现有找不到动态库的错误。因此,我们可以得出结论,当同时存在动态库和静态库时,gcc将优先考虑动态库。