linux下生成,使用静态和动态链接库
来源:互联网 发布:递归算法的使用场景 编辑:程序博客网 时间:2024/05/01 14:16
当要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。 然而,对动态库而言,就不是这样。动态库会在执行程序内留下一个标记‘指明当程序执行时,首先必须载入这个库。由于动态库节省空间,linux下进行连接 的缺省操作是首先连接动态库,也就是说,如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。
//文件h.h
#ifndef _h_h_
#define _h_h_
void myprint();
#endif
//文件h.c
#include<stdio.h>
void myprint()
{
printf("o,my sweety!n");
}
//文件test.c
#include"h.h" //表示先在当前目录下找该头文件,若没有再在系统指定的目录下找
#include<stdio.h> //直接在系统指定的目录下找该头文件
int main()
{
myprint();
exit(0);
}
1.生成静态链接库
gcc -c h.c -o h.o
ar cqs libh.a h.o
//ar是生成库的命令,cqs是参数,libh.a是生成的静态链接库须以lib开头,h是库名,a表示是静态链接库,h.o是刚才生成目标文件
2.生成动态链接库
gcc -c h.c -o h.o
生成动态链接库用gcc来完成
gcc -shared -WI -o libh.so h.o
//-shared -WI是参数,libh.so是生成的静态链接库须以lib开头,h是库名,so表示是动态链接库,h.o是刚才生成目标文件
3.将生成的libh.a,libh.so拷贝到/usr/lib或/lib下
4.编译带静态链接库的程序
gcc -c test.c -o test.o
gcc test.o -o test -WI -Bstatic -lh
//-WI -Bstatic表示链接静态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.a
5.编译带动态链接库的程序
gcc -c test.c -o test.o
gcc test.o -o test -WI -Bdynamic -lh
//-WI -Bdynamic表示链接动态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.so
6.运行./test得到结果
7.其他知识
有些库形如libh.so.1.0,1.0表示版本号.若要使用该库,通常要建立一个软连接,用ln -s libh.so.1.0 libh.so.系统不知道1.0为何意思。
编译连接时同时要用动态和静态链接库,则用如下命令
gcc test.o -o test -WI -Bstatic -lh1 -WI -Bdynamic –lh2
- linux下生成,使用静态和动态链接库
- linux下静态和动态链接库的生成
- linux下静态链接库生成和使用
- VS2010下静态链接库和动态链接库的生成和使用
- Linux下生成和使用/静态和动态库
- Linux下的动态链接库与静态链接库的生成与使用
- Linux下Makefile中动态链接库和静态链接库的生成与调用
- linux 生成和使用动态链接库和静态链接库的Makefile编写
- linux 生成和使用动态链接库和静态链接库的Makefile编写
- linux 生成和使用动态链接库和静态链接库的Makefile编写
- linux 生成和使用动态链接库和静态链接库的Makefile编写
- Linux 下 动态链接库 .so 的生成和使用
- VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Linux环境下c语言静态链接库和动态链接库创建和使用
- linux下动态链接库和静态链接库的使用和区别
- linux下如何生成静态、动态链接库文件
- VC 加载dm大漠COM 组件的方法
- mysql limit的效率及优化和不支持limit子查询的猜测[数据库]
- RTEMS 应用程序含有多级子目录的Makefile工程文件编写
- Linux静态库
- java软件体系结构模式---集合模式
- linux下生成,使用静态和动态链接库
- 可循环显示图像的Android Gallery组件
- QTabWidget使用注意事项
- C# 冒泡排序
- 修改用户环境变量
- 读写文件
- 语义分类体系
- 关于ubuntu添加共享库路径
- Smart Debug网络与串口调试工具(原创)