资讯

展开

静态库和动态库的创建,遇到的问题与问题解决方法

作者:快盘下载 人气:

目录

 

一;库

1.概念

2.库的分类

1-静态库和动态库的区别;

2-静态库的建立

3-动态库的建立


        之前我在学习和动手操作静态库和动态库的过程中遇到的问题;已在本教程中解决并写到了操作过程中;教程从之前的一篇博客中分离出;本文单独讲解两种库的建立;

        学习过程中遇到的问题;

测试静态库时;“gcc main.c -L./库文件所在的文件夹名  -lmyfile”;该命令的-L.后面没有加库文件所在的文件夹名;因为库文件就在下一级的文件夹中;所以只需要加一个文件夹名;或者有时候会忘记添加“-L”后面的“.”。将动态库的库文件复制到“/usr/lib”文件夹下时;提示该文件夹下不能复制;手动复制粘贴也不行;不能点击粘贴选项;所以必须在命令前添加sudo保证有足够大的权限。分享一篇解决找不到静态库问题的链接;关于C#;找不到静态库 | 码农家园

一;库

1.概念

    库就是把一些常用函数的目标文件打包在一起;提供相应的函数接口;便于程序员使用;

    本质上来说;库是一种可执行代码的二进制形式。

2.库的分类

    库包括静态库和动态库。

1-静态库和动态库的区别;

静态库动态库什么时候载入代码程序编译时(链接过程)程序运行时优点运行时不需加载库;运行速度更快代码体积小;程序升级简单;不同程序调用相同的库;只需要在内存中有一份共享库缺点代码体积大;静态库升级时;程序需要重新编译链接运行时需要动态库的存在;移植性差

2-静态库的建立

        在文件夹file中创建一个没有头文件的file.c文件;文件中实现返回两个整型数相加的值的函数功能;

静态库和动态库的创建,遇到的问题与问题解决方法

(1)将原文件编译生成目标文件

gcc -c file.c -o file.o

命令执行后;file文件夹中出现file.o文件;

静态库和动态库的创建,遇到的问题与问题解决方法

(2)用ar命令创建静态库;将.o文件转换为.a文件

ar crs libmyfile.a file.o

静态库和动态库的创建,遇到的问题与问题解决方法

命令执行后;file文件夹中出现静态库文件limyfile.a

静态库和动态库的创建,遇到的问题与问题解决方法

(3)测试静态库。在main.c所在的文件目录下

        在相同路径下的上一级的文件夹中创建main.c和file.h文件;在file.h文件中声明file.c中的函数;main.c要包含file.h文件;

静态库和动态库的创建,遇到的问题与问题解决方法

gcc main.c -L./库文件所在的文件夹名  -lmyfile              //-L是指定库的路径,注意L后面有个点

(l后面跟静态库名;在编译时会自动补全lib)

执行./a.out

静态库和动态库的创建,遇到的问题与问题解决方法

执行可执行文件后;终端输出两数相加之和。

3-动态库的建立

        首先要操作的与静态库的操作相同;在文件夹test中创建一个没有头文件的test.c文件;文件中实现返回两个整型数相乘的值的函数功能;也要在上一个文件夹中创建main.c和test.h;main.c要包含test.h头文件;test.h中要声明test.c中的函数;

静态库和动态库的创建,遇到的问题与问题解决方法

(1) gcc -fPIC -c test.c -o test.o

     gcc -shared -o libmytest.so test.o

静态库和动态库的创建,遇到的问题与问题解决方法

静态库和动态库的创建,遇到的问题与问题解决方法

(2)把库拷贝到/usr/lib的/lib目录下(编译时就不需要指定库的路径;最方便的操作)

sudo cp libmytest.so /usr/lib    //一定要加sudo

静态库和动态库的创建,遇到的问题与问题解决方法

静态库和动态库的创建,遇到的问题与问题解决方法

 静态库和动态库的创建,遇到的问题与问题解决方法

 静态库和动态库的创建,遇到的问题与问题解决方法

(3)测试动态库的使用;在main.c所在的文件目录下

gcc main.c -L. -lmytest

静态库和动态库的创建,遇到的问题与问题解决方法

最后输出两数相乘之积; 

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!